什么时候对旧 Hfile 中的行键的引用被删除或失效?

When are the references to a row key in older Hfile removed or invalidated?

hbase 将记录更新(对于行键 RK1)写入 Hfile。然而,其中一个较旧的 Hfile 将包含对此行键 RK1 的引用。对此 RK1 的旧引用如何以及何时失效?

假设有包含行键 RK1 的记录的 Hfile。 然后这个 RK1 被更新,这意味着这个更新被写入一个新的 HFile。 必须使包含引用 RK1 的旧 Hfile 失效。 这在 Hbase 中如何以及何时完成?

谢谢。

在 HDFS 文件中是 immutable 对象,因此新旧文件都将保留引用 RK1。为了不在HDFS中保留大量的HFile,HBase会周期性地做一个compaction工作:将旧的小HFile合并成新的大HFile,并删除旧的小HFile。对 RK1 的引用将在 HFile 中,直到发生文件压缩。对此没有保证,在次要压缩期间,运行 仅在几个 HFile 上。 Major compaction 合并所有文件。要强制删除旧值,您应该触发主要压缩。小心主要压缩,因为巨大的 table 它会运行数小时。