0

HBase は Memstore でインプレース更新を実行しますか。同じ行キーに複数のバージョンの値がある場合、HBase memstore は古い値を削除して新しい値に置き換えますか?

4

2 に答える 2

1

いいえ、既存のレコードを削除して置き換えることはありません。新しいキー値 (レコード データ) を memstore に追加します。最初の理由: セル (列) 値の複数のバージョンを保持するように構成されている可能性があります。ただし、保持するように構成されているよりも多くのバージョンのセルが memstore にある場合でも、レコードを上書きする (または最も古いものを削除する) 代わりに、レコードを追加します。

ただし、HBase の最新バージョン (0.92+) では、memstore のフラッシュ プロセスが最適化されていることに注意してください。保持するバージョンの最大数)。詳細はこちら: HBASE-4241。Memstore の既存の値を「オーバーライド」しているように見えますが (少なくとも外部の観点からは)、正確にはそうではありません。この最適化は、memstore のフラッシュ時にのみ発生するため、memstore のサイズには影響しません。新しい値が書き込まれると、常に追加されます。つまり、この最適化により、フラッシングがまれに発生することはありません。

ここでは最適化に関連する進行中の作業があるため、次のリリースに注目してください。

はい、Richard が述べたように、HBase Memstore の構成の詳細については、こちらを参照してください。

于 2012-07-24T03:48:08.643 に答える
0

memstore は HFile と同じように更新を保持しますが、テーブルの構成に従ってディスクに書き込むだけです (たとえば、行の 1 つのバージョンのみを保持するようにテーブルを設定した場合、最新のものだけがディスクに書き込まれます)。

memstore がどのように機能するかについての良い説明がありますhere

于 2012-07-22T17:22:44.723 に答える