HFile と Memstore のメモ

  • store files は HFile の事。
  • Key-Value 不変マップ。
  • HFile はブロックに分けられていて、最後にブロックインデックスが付属している。
  • ブロックインデックスは HFile がオープンされた時に読み込まれメモリ上に保持される。
  • デフォルトのブロックサイズは 64kB。
  • 更新データは最初 write-ahead log (WAL) と呼ばれるコミットログに書き込まれメモリ内の memstore に保存される。
  • データの大きさが許容量を超えたら HFile としてディスクにフラッシュされる。
  • フラッシュが終わるとコミットログ内の最新未フラッシュ更新まで破棄される。
  • memstore の内容をディスクにフラッシュしている間、読み込み/書き込み処理はブロックされない。
  • これは、既存のいっぱいになった領域がファイルに書きこまれている間に、新しく作成した空の領域を更新するよう、メモリ上の memstore をローリングすることでアーカイブされる。
  • memstore 上のデータはディスク上の HFile の内容と全く同じようにキーでソートされている。このため保存時に特にソートなどの処理は行われない。