Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
hbase 将记录更新(对于行键 RK1)写入 Hfile。但是,较旧的 Hfile 之一将包含对此行键 RK1 的引用。对这个 RK1 的旧引用是如何以及何时失效的?
假设有 Hfile 包含 rowkey RK1 的记录。然后这个 RK1 被更新,这意味着这个更新被写入一个新的 HFile。包含引用 RK1 的旧 Hfile 必须无效。这是如何以及何时在 Hbase 中完成的?
谢谢。
在 HDFS 中,文件是不可变对象,因此旧文件和新文件都将保留参考 RK1。为了不在 HDFS 中保留大量的 HFile,HBase 会定期进行压缩工作:将旧的小 HFile 合并为新的大 HFile,并删除旧的小 HFile。对 RK1 的引用将在 HFile 中,直到发生文件压缩。在次要压缩期间,不能保证仅在几个 HFile 上运行。主要压缩合并所有文件。要强制删除旧值,您应该触发主要压缩。小心主要的压实,对于巨大的桌子,它会运行几个小时。