我有一个HBase表'emp'。我使用hbase-shell在其中创建了一些行,其中最大的行键是123456789。当我检查HBase UI ( web控制台)时,请遵循以下路径:
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的行时出现了问题。我还放入了其他一些行,最后刷新了表flush 'emp'。
我看到生成了第二个HFile。但是第一个HFile的Key of biggest row总是123456789。
所以我非常困惑:这一行不再存在于我的hbase表中,并且我已经执行了刷新(所以memstore中的所有内容都应该在HFile中)。为什么在stats中总是显示这个行键?幕后发生了什么?我如何更新stats?
发布于 2020-02-21 17:25:40
您说得对,内存存储中的所有内容现在都在HFiles中,但是在压缩发生之前,删除的行将仍然存在,尽管在新的第二个HFile中标记为删除。
如果您使用major_compact ‘table_name’, ‘col_fam’强制压缩,您应该会看到此记录消失(只剩下一个HFile)。也许stats中有一个小错误,没有考虑到删除的记录?
https://stackoverflow.com/questions/60329281
复制相似问题