kylin中的垃圾数据主要包括 :
1:purge之后的原cube数据
2:Cube合并之后原Cube Segment的数据
3:任务失败了但是没有正常清理的临时数据文件
4:已经过时的Cube构建的日志和任务历史
kylin 本身提供了如何清理垃圾数据的操作,在这里要注意一点就是元数据的清理要做好备份准备,同时kylin也提供了元数据备份的操作。
一 :kylin 元数据的清理
元数据主要包括无用的字典,表的快照等无用信息,可以通过下面的命令来查看和清理无用的元数据
1):检查元数据(这个命令只是一个查询,不会对kylin做其它操作,是安全的)
$KYLIN_HOME/bin/metadatastore.sh clean
上面的命令只会列出需要清理的元数据信息,不会执行具体的操作,如果要执行具体的操作可以加 —delete true
默认情况下,该操作会清理的资源表如下:
1 :2天前创建的已无效的Lookup表镜像,字典,Cube统计信息
2 :30天前结束的Cube构建任务步骤信息,步骤输出
2):备份,还原元数据
在删除前最好做一个备份,元数据是很重要的数据
备份 :$KYLIN_HOME/bin/metadata.sh backup
查看元数据信息 /metabackup/metadata_xxx_xx
还原元数据 : ./metadata.sh reset ./metadata.sh restore $KYLIN_HOME/metadatabackup/metadata_xx_xx_xx
二 :清理存储器数据
kylin在构建Cube过程中会在HDFS上生成中间数据,另外,当我们对Cube执行 purge/drop/merge 时,一些HBase的表可能会保留在HBase中,而这些表不在被查询,kylin本身会有自动垃圾回收,但是只是回收单方面的,不会覆盖所有方面,所以需要人工隔断时间进行离线存储的清理工作。
1):列出kylin 存储在hdfs上面的所有中间数据,也可以认为是可删除数据
${KYLIN_HOME}/bin/kylin.sh org.apache.kylin.storage.hbase.util.StorageCleanupJob --delete false
上面命令不会执行删除,只是列出来kylin存在hbase和hdfs上面的可删除数据。(我这里已经执行删除过了,所以是空的)
2 ):执行删除操作
${KYLIN_HOME}/bin/kylin.sh org.apache.kylin.storage.hbase.util.StorageCleanupJob --delete true
以上操作kylin在hdfs和hbase上面的数据就干净了,查看磁盘空间也清理出了很多。
有兴趣的可以查看具体的逻辑代码。