2012-07-16 104 views

回答

0

memstore保存更新,就像HFile一样,但它只会根据表的配置写入磁盘(例如,如果您已将表设置为仅保存一行版本,则只写入最新的行到磁盘)。

还有的的memstore如何工作here

1

没有一个很好的解释,也不会删除&取代现有的记录。它会将新的键值(记录数据)附加到memstore。 第一个原因:它可能被配置为保留一个以上版本的单元格(列)值。但即使memstore中单元格的版本比配置为保留更多版本,它仍会追加记录而不是覆盖它(或删除最旧的)。

但是,请注意,在更新版本的HBase(0.92+)中,存在一个对memstore刷新过程的优化:它可能跳过(不写入HFiles)太旧的单元版本(即不应该包含在最大数量的版本中)。更多关于这里:HBASE-4241。 虽然它看起来像“覆盖”Memstore中的现有值(至少从外部的角度来看),但它并不完全是这样做的。这种优化仅在memstore刷新时发生,因此不会影响memstore大小:写入新值时,它们始终附加。即这种优化不会导致更少发生刷新。

这里有一个与优化有关的正在进行的工作,所以请留意下一个版本。

是的,正如Richard提到的,您可以了解更多关于配置HBase Memstore here的信息。

+0

这是很好的解释!顺便说一句,如你所说,habse源代码的哪一部分正在维护memstore?请指出,如果可能的话。 – Richard 2012-07-25 19:56:06

+0

我想你要找的是org.apache.hadoop.hbase.regionserver.MemStore – 2012-07-25 21:23:29