hive 中間會話臨時文件自動清理腳本


hive在運行過程中,我們經常會發現 hdfs /tmp/hive/hive or hdfs 目錄占用空間巨大,我這里已經清理過了所以,相對較小。但是初次使用hive的用戶,一定會發現

隨着時間的推移,/tmp/hive 目錄一定會變的越來越龐大,這主要是hive在運行過程中會生產大量的中間會話在/tmp目錄下,如果hive正常運行結束,臨時會話會被自動清理掉,

但是如果中間出現hive中斷,或者異常退出,這些中間會話就會一直保存在hdfs上,久而久之,越來越多,造成大量無用的積壓文件。必須手動清理掉。

 

參考國外論壇的腳本,寫了如下腳本,定時清理或者手動執行均可。

#!/bin/bash
#cleanup hive session dir on hdfs named with /tmp/hive/hdfs
usage="Usage: cleanup.sh [days]"

        if [ ! "$1" ]

        then

        echo $usage

        exit 1

fi

now=$(date +%s)

hadoop fs -ls  /tmp/hive/hdfs | grep "^d" | while read f; do

dir_date=`echo $f | awk '{print $6}'`

difference=$(( ( $now - $(date -d "$dir_date" +%s) ) / (24 * 60 * 60 ) ))

if [ $difference -gt $1 ]; then

echo $f
hadoop fs -rm -r -skipTrash  `echo $f| awk '{ print $8 }'`;   //此處直接對上邊的過濾結果進行刪除,建議先改成 hadoop fs -ls -R 命令先進行測試,一切正常在改回刪除。

fi

done

-------------------------------------------------------------

我這邊,阿里雲centos7環境,腳本運行正常。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM