Pinpoint数据定期清理的唯一方式

 

目前pinpoint并没有内置清理hbase数据的功能,唯一的方法是依托hbase的清理机制进行清理。

 

hbase清理思路如下:

      1. 定期运行一次Major Compact(通过crontab 任务),用来删除早于给定TTL值的所有数据。

      2. TTL大小(单位:秒)可根据磁盘情况在hbasecreate.hbase里进行设置,也可在启动后通过hbase shell手动设置。

      注意:如果只设置TTL而不定期运行Major Compact(大合并),只是标记删除,并不会真正从磁盘上删除。df命令可查。

 

具体实现方式如下:

      1.添加crontab定时任务

      因major compact执行期间会对集群的磁盘和带宽带来较大影响,所以建议每周执行一次,并且选择夜间集群负载较低时进行。

      在/etc/crontab中添加如下内容:

       Pinpoint数据定期清理的唯一方式

 

      2.编写1中用到的major compact脚本

      通过docker exec -i 命令进入容器内执行hbase shell,此处容器名为docker-compose启动时预设的,需根据实际容器名进行设定。

      hbase shell中执行 major_compact '表名' 命令进行major compact。

       此处所有表名都是根据hbase中实际存在的表名进行硬编码的。可通过查看hbasecreate.hbase或者执行hbase shell的list命令查看你的集群中的所有表名。

      脚本具体内容如下:

       Pinpoint数据定期清理的唯一方式

 

      脚本执行情况:

         Pinpoint数据定期清理的唯一方式

 

3.补充:关于TTL大小的设定

      有两种方式,一种是在hbase启动的时候,可以直接配置hbasecreate.hbase里的表信息直接进行设定。另一种方式是启动后通过执行hbase shell进行手动更改,具体实现如下所示。

 

       Pinpoint数据定期清理的唯一方式

 

 

       refs:https://github.com/naver/pinpoint/issues/429