HBase は Memstore でインプレース更新を実行しますか。同じ行キーに複数のバージョンの値がある場合、HBase memstore は古い値を削除して新しい値に置き換えますか?
2 に答える
いいえ、既存のレコードを削除して置き換えることはありません。新しいキー値 (レコード データ) を memstore に追加します。最初の理由: セル (列) 値の複数のバージョンを保持するように構成されている可能性があります。ただし、保持するように構成されているよりも多くのバージョンのセルが memstore にある場合でも、レコードを上書きする (または最も古いものを削除する) 代わりに、レコードを追加します。
ただし、HBase の最新バージョン (0.92+) では、memstore のフラッシュ プロセスが最適化されていることに注意してください。保持するバージョンの最大数)。詳細はこちら: HBASE-4241。Memstore の既存の値を「オーバーライド」しているように見えますが (少なくとも外部の観点からは)、正確にはそうではありません。この最適化は、memstore のフラッシュ時にのみ発生するため、memstore のサイズには影響しません。新しい値が書き込まれると、常に追加されます。つまり、この最適化により、フラッシングがまれに発生することはありません。
ここでは最適化に関連する進行中の作業があるため、次のリリースに注目してください。
はい、Richard が述べたように、HBase Memstore の構成の詳細については、こちらを参照してください。
memstore は HFile と同じように更新を保持しますが、テーブルの構成に従ってディスクに書き込むだけです (たとえば、行の 1 つのバージョンのみを保持するようにテーブルを設定した場合、最新のものだけがディスクに書き込まれます)。
memstore がどのように機能するかについての良い説明がありますhere