2014-01-21 17 views
8

HBaseはHDFSにファイルが保存されているデータベースであるため、HDFS内のデータにランダムアクセスする方法はありますか?どちらの方法でこれが達成されていますか?HBaseはどのようにHDFSへのランダムアクセスを可能にしますか?

the Apache HBase Reference Guideから:

のHBaseは、内部高速検索にHDFS上に存在するインデックス付きの "StoreFilesと" にデータを置きます。 HBaseの目標達成の詳細については、第5章データモデルとこの章の残りの章を参照してください。

両方の章をスキャンしても、この質問の上位レベルの回答は見つかりませんでした。

HBaseはHDFSに保存されたファイルにどのようにランダムアクセスできますか?

答えて

11

HBaseは、キーでインデックスされた(並べ替えられた)HFilesにデータを格納します。ランダムキーが与えられた場合、クライアントは、行を要求するリージョンサーバーをいつ決定できます。リージョンサーバーは、行を取り出す領域を決定し、その領域をバイナリ検索して正しい行にアクセスすることができます。これは、ブロック数、ブロック・サイズ、開始キー、および終了キーを知るための十分な統計を持つことによって達成されます。

たとえば、テーブルには10 TBのデータが含まれます。しかし、テーブルは4GBのサイズの領域に分割されています。各領域には開始/終了キーがあります。クライアントはテーブルの領域のリストを取得し、どの領域にキーがあるかを判断できます。リージョンはブロックに分割されているため、リージョン・サーバーはそのブロックを介してバイナリー検索を実行できます。ブロックは基本的にキー、属性、値、バージョンの長いリストです。各ブロックの開始キーが何であるか分かっている場合、アクセスする1つのファイルと、バイナリ検索のどこにあるかを見るためにバイトオフセット(ブロック)を読み取ることを決定できます。

関連する問題