Kylin垃圾清理

2022-04-18 14:10:43 浏览数 (1)

kylin在运行一段时间之后,有很多数据因为不再使用从而变成了垃圾数据,这些数据占用着大量的HDFS空间(起初就是因为发现hdfs节点磁盘很快爆满,但是明明没有什么task running),这些数据占用着hdfs和hbase的资源,当累计到一定程度时对集群性能会产生影响

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上面的数据就干净了,查看磁盘空间也清理出了很多。

有兴趣的可以查看具体的逻辑代码。

0 人点赞