最近接手了一个的hbase和hadoop的小集群,被告知hbase有TTL不生效的问题(磁盘未释放),做个记录
hbase版本1.2.7
hdfs版本2.7.5
问题描述:
hbase中所有的表都配置了TTL,然而hdfs使用量依然不断增加,直至磁盘打满,datanode全挂。
解决过程:
1、在我负责接手这部分服务后,了解到之前伙伴的处理方式简直简单粗暴,每次出现问题,直接rm -rf datanode数据目录下的 BP-XXXXX目录。。。终于知道hdfs为什么会有9000+个corrupt block了。
2、二话不说,先fsck,清理掉这些坏块。另外看到namenode ui还有这么个东西
1月3日开始的一个Rolling upgrade。。。现在已经是6月份了,本着既然正常用着就不随便变更的原则,对于Rolling upgrade咱们经验也不丰富,暂时先不管。
3、从hbase原理上来看看待TTL这个问题,hbase的TTL本质是先对数据打一个墓碑标记,真正删除的时候是在major compaction的时候生效(有那么点类似于JVM复制算法);另外一个是MIN_VERSION要为0,否则无论如何TTL都不会生效。
了解当前hbase的情况,使用默认配置7天一次major compaction,但是当前场景是数据4天会写满集群,数据保存1天就够用,那么正常来