12

HBaseは、HDFSをバックエンドの分散ファイルシステムとして使用できます。ただし、デフォルトのブロックサイズはまったく異なります。HBaseはデフォルトのブロックサイズとして64KBを採用していますが、HDFSはデフォルトのブロックサイズとして少なくとも64MBを採用しています。これは、HBaseの少なくとも1000倍の大きさです。

HBaseはランダムアクセス用に設計されているため、ブロックサイズを小さくすると便利です。しかし、HBaseで64Kブロックにアクセスする場合でも、HDFSで1つの64MBブロックにアクセスする必要がありますか?それが本当なら、HBaseは非常にランダムなアクセスをうまく処理できますか?

4

2 に答える 2

10

ブロックは、HDFSとHBaseでさまざまな目的に使用されます。HDFSのブロックは、ディスク上のストレージの単位です。HBaseのブロックは、メモリのストレージの単位です。単一のHBaseファイルに収まる多くのHBaseブロックがあります。HBaseは、HDFSファイルシステムの効率を最大化するように設計されており、そこでブロックサイズを完全に使用します。HBaseをより効率的にするために、HDFSを20GBのブロックサイズに調整した人もいます。

HBaseの舞台裏で何が起こっているのかを理解するためにもっと読む場所の1つは、http://hbase.apache.org/book.html#regionserver.archです

メモリよりもはるかに大きいテーブルに完全にランダムアクセスできる場合、HBaseキャッシュは役に立ちません。ただし、HBaseはデータの保存と取得の方法がインテリジェントであるため、リクエストに必要なデータを取得するためにHDFSからファイルブロック全体を読み取る必要はありません。データはキーによって索引付けされており、効率的に取得できます。さらに、クラスター全体にデータを分散するようにキーを適切に設計した場合、ランダム読み取りはすべてのサーバーから均等に読み取られるため、全体的なスループットが最大化されます。

于 2012-09-18T20:33:29.870 に答える
8

HBase

HBaseは、データをHFilesと呼ばれる大きなファイルに永続化します。これらのファイルはサイズが大きくなります(数百MBのオーダー、または約GB)。

HBaseが読み取りを行う場合、最初にmemstoreで、最近の更新または挿入からのデータがメモリ内にあるかどうかをチェックします。そのデータがメモリ内にない場合は、必要なデータを含む可能性のあるキーの範囲を持つHFilesを見つけます(圧縮を実行した場合は1ファイルのみ)。

HFileには多くのデータブロック(デフォルトでは64kBのHBaseブロック)が含まれています。これらのブロックは小さいため、高速でランダムにアクセスできます。そして、ファイルの最後に、これらすべてのブロックを参照するインデックスがあります(ブロック内のキーの範囲とファイル内のブロックのオフセットを使用)。

最初にHFileを読み取るときに、インデックスがロードされ、将来のアクセスのためにメモリに保持されます。

  • HBaseは、インデックス(メモリ内で高速)でバイナリ検索を実行して、要求したキーを含む可能性のあるブロックを見つけます
  • ブロックが見つかると、HBaseはファイルシステムに、ファイル内のこの特定のオフセットでこの特定の64kブロックを読み取るように要求できます。その結果、単一のディスクがチェックするデータブロックをロードしようとします。
  • ロードされた64kHBaseブロックは、要求されたキーを検索し、存在する場合はキー値が返されます

小さなHBaseブロックがある場合、ランダムアクセスを実行するときにディスクをより効率的に使用できますが、インデックスサイズとメモリの必要量が増加します。

HDFS

すべてのファイルシステムアクセスは、ブロック(デフォルトでは64MB)を持つHDFSによって実行されます。HDFSでは、ブロックは分散とデータの局所性に使用されます。つまり、1GBのファイルが64MBのチャンクに分割され、分散および複製されます。データはそのチャンクで連続しているため、バッチ処理時間がディスクシークに費やされるだけではないことを保証するため、これらのブロックは大きくなります。

結論

HBaseブロックとHDFSブロックは別のものです。

  • HBaseブロックは、HBaseのインデックス作成(およびキャッシングと圧縮)の単位であり、高速ランダムアクセスを可能にします
  • HDFSブロックは、ファイルシステムの分散とデータの局所性の単位です。

HBaseパラメーターおよびニーズと比較したHDFSブロックサイズの調整は、パフォーマンスに影響を与えますが、これはより微妙な問題です。

于 2015-06-03T20:50:01.533 に答える