HBase_HBase删数策略总结

HBase_HBase删数策略总结

1.HBase存储预计算数据类型

  • day(天数据):永久保存,最长需求时间由业务产品设定。
  • tw(周至今数据):周一数据永久保存,非周一数据存储1天即可。
  • tm(月至今数据):1日数据永久保存,非1日数据存储1天即可。
  • d7(近7天数据):存储1天即可。
  • d30(近30天数据):存储1天即可。

2.存储治理策略

2.1 读取hive源表重组rowkey

这是当前最主流也是一直在用的一种方法,这种方法的缺点就是一定要依赖hive源表,且批处理删除对hbase集群压力较大。

2.2 数据存入时自定义时间戳

hbase在HBASE-10560之后可以支持列族TTL和单元格TTL了。那么可以设置列族TTL为业务产品设定的数据最长保存时间,然后在推数时为非周一tw数据、非1日tm数据、d7数据、d30数据设置单元格TTL为1天。

TTL作用原理就是系统当前时间currentMilliseconds-单元格时间戳timestamp>TTL则判定该单元格过期,无法被查询返回,compaction时被删除。

列族TTL和单元格TTL可以同时设置,哪个更小就按哪个来判定单元格数据是否过期。

2.3 新增删除标志字段

新建hbase表中增加可以标识存储数据类型和存储时间的字段,比如添加一个字段用0720220801表示这是20220801的d7数据,3020220801表示这是20220801的d30数据,3320220801表示这是20220801的tw数据,9920220801表示这是20220801的tm数据。然后在删数的时候就可以根据该字段判断该行数据需不需要删除,而不需要再从hive源表中获取数据拼接rowkey。

为了消除数据扫描对hbase集群造成的压力,还可以在删数之前新建该表的快照,然后借助hbase的列值过滤器,扫描出需要删除的目标rowkey保存到Text文件中。最后读取该Text文件批处理删除hbase中的数据。

参考文献

hbaseTTL生效原理

hbaseTTL的设置

hbase列族TTL和单元格TTL

HBASE-10560 Per cell TTLs