ビデオ: Hadoop 影音教學 Day4 : Hive 語法與基本概念介紹(下) 2024
RegionServersは1つですが、個々のリージョンの仕組みも見ておく必要があります。 HBaseでは、テーブルが複数のRegionServersにまたがって広がっているだけでなく、個々のリージョンで構成されています。テーブルが分割されるにつれて、分割は領域になります。リージョンには一連のキーと値のペアが格納され、各リージョンサーバーは設定可能なリージョン数を管理します。
しかし、個々の地域はどのように見えますか? HBaseは列ファミリ指向のデータストアなので、個々の領域は、その列ファミリに属するキーと値のペアをどのように格納しますか?次の図は、これらの質問に答えることを開始し、HBaseのアーキテクチャに関する重要な情報を消化するのに役立ちます。
<! - 1 - >HBaseはJavaで書かれています - Hadoop技術の大部分のようです。 Javaはオブジェクト指向プログラミング言語であり、分散コンピューティングのための洗練された技術です。したがって、HBaseの詳細については、アーキテクチャのすべてのコンポーネントが最終的にJavaオブジェクトであることを忘れないでください。
<!最初に、上の図は、一般的に言えば、どのような領域オブジェクトが実際にどのように見えるかについてかなり良い考えを示しています。また、リージョンがデータを列ファミリに分割し、HFileオブジェクトを使用してHDFSにデータを格納することも明らかになりました。クライアントがキーと値のペアをシステムに入力すると、キーが処理され、ペアが属する列ファミリに基づいてデータが格納されます。図に示すように、各列ファミリストアオブジェクトには、BlockCacheと呼ばれる読み取りキャッシュとMemStoreという書き込みキャッシュがあります。 BlockCacheは、ランダムな読み取りパフォーマンスに役立ちます。
<! - 3 - >
データはHDFSからブロック単位で読み込まれ、BlockCacheに格納されます。データの後続の読み取り(または近接して保存されたデータ)は、ディスクではなくRAMから読み取られ、全体的なパフォーマンスが向上します。 Write Ahead Log(WAL、略して)は、HBase書き込みが信頼できるものであることを保証します。 RegionServerごとに1つのWALがあります。分散コンピューティングのアイアンの法則に常に耳を傾けます。失敗は例外ではありません。特に、数百または数千のサーバーをクラスタリングする場合は例外です。 GoogleはBigTableとHBaseの設計にIron法を遵守しました。
HBaseでデータを書き込んだり修正したりすると、データは最初にHDFSに保存されているWALに保存され、その後、データはMemStoreキャッシュに書き込まれます。設定可能な間隔で、MemStoreに格納されたキーと値のペアがHDFSのHFilesに書き込まれ、その後WALエントリが消去されます。
ディスクへの最後のMemStore書込みの前に、初期WAL書込みが
失敗した後に エラーが発生した場合、データ損失を回避するためにWALを再生することができます。 3つのHFileオブジェクトは1つの列ファミリにあり、2つの列オブジェクトは2つの列ファミリにあります。 HBaseの設計は、MemStoreに格納されているカラムファミリデータをフラッシュごとに1つのHFileにフラッシュすることです。設定可能な間隔で、HFilesはより大きなHFilesに結合されます。この戦略は、HBaseのクリティカルコンパクション操作をキューに入れます。