Hbaseがどのように機能するかを理解しようとしています。具体的には、データをディスクに保存する方法です。
私はオンラインで記事を読みましたが、そのうちの2つは私を助けました -
http://th30z.blogspot.com/2011/02/hbase-io-hfile.html?spref=tw
と
HBase をよく理解していなかったために、まだいくつか質問があります。これが私が読んだものから得られるものです-すべてのトランザクション-(Put / Get / Delete)はmemstoreにKeyValueとして保存され、フラッシュ時にStoreFiles / Hfilesに書き込まれます。ディスクに格納されるデータは、実際にはこれらの HFiles です。
ここで、KeyValue クラスの構造は、格納する必要があるデータ (存在する場合)、キー、および操作の種類 (Put/Get/Delete) を指定します。HFiles 自体のデータ ブロックは KeyValues を表します (「行キー」はキーの一部です)。
私が見ているように、これらの KeyValue が永続化されると、既存のデータを変更するというよりも、トランザクションを保存するようになります。この種のトランザクションが処理/統合されて行になるのはいつですか。圧縮プロセス中に発生する可能性があると想定しましたが、HFile に書き込まれているが圧縮されていないデータへの要求がどのように処理されるかわかりません。
「KeyValue ペアがブロックに書き込まれる前に、キーの順序が前のものよりも大きくなければならない」という記事も理解できませんでした。
HBase を理解する過程で、いくつかの間違った仮定をしたと思います。
誰かがこれを理解するのを手伝ってくれますか?