3

私は HBase についていくつかの調査を行ってきましたが、現在、HBase 読み取りパスがどのように機能するかを理解する上で課題を見つけています。私はそれがどのように機能するかについての基本的な理解を持っています。しかし、ブルーム フィルターをチェックする複数の HFiles を読み取る方法については、明確に理解していません。メタブロックの目的、hbase がデータの読み取りに使用する方法。hfiles のインデックスの目的とその使用方法は?

したがって、この概念を理解するにはあなたの助けが必要でした。

あなたの時間は大歓迎です。ありがとう

4

1 に答える 1

5

読み取り時に複数の HFile が存在する場合、HBase は問題の行が存在するかどうかをチェックします。そこにある場合、HBase はすべての HFiles (および memstore) からその行を読み取るため、クライアントは常に最新のデータを取得します。よく分からなくてすみませんblock filters。これについて読んだ情報源を教えてください。それはあなたに完全な答えを提供するのに役立ちます.(ブルームフィルターのことですか?)

メタブロックの目的は、大量のデータを保持することです。メタブロックは、BloomFilter を格納するために HFile によって使用され、文字列キーが各メタブロックに関連付けられます。メタブロックは、HFile.close() が呼び出されるまでメモリに保持されます。

読み取りを高速化するために、メタブロックのインデックスが書き込まれます。これらのインデックスには、ブロック情報 (ブロック オフセット、サイズ、および最初のキー) を含む n レコード (n はブロック数) が含まれます。最後に、Fixed File Trailer が HFile に書き込まれます。これには、すべての HFile インデックス、HFile バージョン、圧縮コーデックなどのオフセットとカウントが含まれています。読み取りが開始されると、最初にHFile.loadFileInfo()呼び出され、以前に書き込まれたファイル トレーラがすべてのインデックスとともにメモリにロードされます。キーを効率的にクエリできます。次に、HFileScannerクライアントの助けを借りて、指定されたキーをシークし、それを反復処理してデータを読み取ります。

これらのことを理解するのに役立ったリンクを紹介したいと思います。うまくいけば、それらが役に立つでしょう。

リンク 1: Apache HBase I/O – HFile (Cloudera)

リンク 2: HBase I/O: HFile (th30z)

リンク 3: HBase でのスキャン

HTH

于 2013-06-27T15:48:48.480 に答える