6

私はHbaseに取り組んでいます。Hbase が LSM を使用してソートされた順序でデータを格納する方法について質問があります。

私の理解では、Hbase は大規模なデータ処理でのデータ転送に LSM ツリーを使用します。データがクライアントから来ると、最初にメモリ内に順番に保存され、次に並べ替えられて B-Tree として保存ファイルとして保存されます。StoreファイルをDisk B-Tree(キーの)とマージするよりも。それが正しいか ?何か不足していますか?

  • はいの場合、クラスター環境よりも。クライアント要求を受け取る複数の RegionServer があります。その場合、(各 regionServer の) すべての Hlog がディスク B ツリーとマージされる方法 (既存のキーがすべての dataNode ディスクに広がるため) ?

  • Hlog は同じ regionServer の Hfile とデータをマージするだけですか?

4

2 に答える 2

10

あなたが望むものを正確に説明するこの2つの記事を見ることができます

http://blog.cloudera.com/blog/2012/06/hbase-io-hfile-input-output/

http://blog.cloudera.com/blog/2012/06/hbase-write-path/

簡単に言えば:

  • クライアントは、キーの処理を担当するリージョン サーバーにデータを送信します。
  • (.META. には各リージョンのキー範囲が含まれます)
  • ユーザー操作 (put など) は Write-Ahead-Log (WAL、HLog) に書き込まれます。
  • (ログは、リージョン サーバーがクラッシュした場合に「安全」のためにのみ使用されます。ログは、ディスクに書き込まれていないデータを回復するために再生されます)
  • ログへの書き込み後、データは MemStore にも書き込まれます
  • ...memstore がしきい値に達したら (conf プロパティ)
  • memstore がディスクにフラッシュされ、単一の hfile が作成されます
  • ...hfiles の数が増えすぎると (conf プロパティ)、圧縮が開始されます (マージ)

ディスクのデータ構造に関して: http://blog.cloudera.com/blog/2012/06/hbase-io-hfile-input-output/ 上記の記事では、hfile 形式について説明しています...これは追加のみの形式です。そして、b+tree のように見ることができます。(この b+tree はその場で変更できないことに注意してください)

HLog は「安全」のためにのみ使用されます。データが hfiles に書き込まれると、ログは破棄できます。

于 2012-12-07T13:13:52.900 に答える