HBase:刷新后 HFile 统计信息未更改

HBase : HFile stats not changed after flush

我有一个 HBase table 'emp'。我使用 hbase-shell 在其中创建了一些行,其中最大的 rowkey 是 123456789。 当我按照以下路径检查 HBase UI(网络控制台)时:

regions -> emp,,1582232348771.4f2d545621630d98353802540fbf8b00. -> hdfs://namenode:9000/hbase/data/default/emp/4f2d545621630d98353802540fbf8b00/personal data/15a04db0d3a44d2ca7e12ab05684c876 (store file) 

我能看到Key of biggest row: 123456789,所以一切都很好。

但是当我使用 hbase-shell 删除包含行键 123456789 的行时,问题就来了。我还放了一些其他行,然后最后刷新 table flush 'emp'.

我看到生成了第二个 HFile。但是第一个HFile的Key of biggest row总是123456789.

所以我很困惑:这一行不再存在于我的 hbase table,而且我已经进行了刷新(所以 memstore 中的所有内容都应该在 HFile 中)。为什么在 stats 它总是显示这个 rowkey ?幕后发生了什么? 我该如何更新 stats ?

你是正确的,memstore 中的所有内容现在都在 HFiles 中,但是在压缩发生之前,删除的行将仍然存在,尽管在新的第二个 HFile 中标记为删除。

如果您使用 major_compact ‘table_name’, ‘col_fam’ 强制压缩,您应该会看到这条记录消失(并留下一个 HFile)。也许 stats 中有一个小错误,它没有考虑已删除的记录?