在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