在Kylin运行一段时间之后,有很多数据因为不再使用而变成了垃圾数据,这些数据占据着大量HDFS、HBASE等资源,当积累到一定规模时会对集群性能产生影响。这些垃圾数据主要包括:
- Purge之后原Cube的数据
- Cube合并之后原Cube Segment的数据
- 任务失败中未被正常清理的临时数据文件
- 已经过时的Cube构建的日志和历史任务
为了对这些垃圾数据进行清理,Kylin提供了两个常用的工具。特别注意:数据一经删除将彻底无法恢复!建议使用前一定要进行元数据备份,并对目标资源删除之前进行谨慎的核对。
清理元数据
- 首先,执行检查,这是安全操作,不会修改任何内容
$KYLIN_HOME/bin/metastore.sh clean #这样智慧列出可以被清理的资源供用户核对,而不进行实际的删除操作
2. 在上面的命令中添加“--delete true”参数,这样就会清理掉无用的资源,切记,在这个命令操作之前,一定要备份kylin元数据
$KYLIN_HOME/bin/metastore.sh clean --delete true
清理存储器数据
Kylin在构建Cube过程中会在HDFS上生成中间数据。另外,当我们对Cube执行purge/drop/merge时,一些HBASE的表可能会保留在HBASE中,而这些表不再被查询,尽管Kylin会做一些自动的垃圾回收,但是它可能不会覆盖所有方面,所以需要我们能够没隔一段时间做一些离线存储的清理工作。
1.检查那些资源需要被清理,这个操作不会删除任何内容
$KYLIN_HOME/bin/kylin.sh org.apache.kylin.storage.hbase.util.StorageCleanupJob --delete false
2.开始执行清理操作
$KYLIN_HOME/bin/kylin.sh org.apache.kylin.storage.hbase.util.StorageCleanupJob --delete true