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中添加如下内容:
2.编写1中用到的major compact脚本
通过docker exec -i 命令进入容器内执行hbase shell,此处容器名为docker-compose启动时预设的,需根据实际容器名进行设定。
hbase shell中执行 major_compact '表名' 命令进行major compact。
此处所有表名都是根据hbase中实际存在的表名进行硬编码的。可通过查看hbasecreate.hbase或者执行hbase shell的list命令查看你的集群中的所有表名。
脚本具体内容如下:
脚本执行情况:
3.补充:关于TTL大小的设定
有两种方式,一种是在hbase启动的时候,可以直接配置hbasecreate.hbase里的表信息直接进行设定。另一种方式是启动后通过执行hbase shell进行手动更改,具体实现如下所示。