1

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

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

谢谢。

4

1 回答 1

0

在 HDFS 中,文件是不可变对象,因此旧文件和新文件都将保留参考 RK1。为了不在 HDFS 中保留大量的 HFile,HBase 会定期进行压缩工作:将旧的小 HFile 合并为新的大 HFile,并删除旧的小 HFile。对 RK1 的引用将在 HFile 中,直到发生文件压缩。在次要压缩期间,不能保证仅在几个 HFile 上运行。主要压缩合并所有文件。要强制删除旧值,您应该触发主要压缩。小心主要的压实,对于巨大的桌子,它会运行几个小时。

于 2015-11-11T09:10:50.260 回答