最近叢集空間有點緊張,總是擔心空間不足而崩潰,近期擴容又不太現實,經與叢集使用者溝通發現:叢集上儲存了很多無用的曆史資料,可以刪除,這樣就可以通過一個crontab指令碼每天產生叢集空間使用報告,當使用量超過70%、80%是分別警示,並通知那些使用者佔用空間較大,預留當機冗餘空間,這樣就不需要時刻擔心叢集空間爆滿了。
[hdfs@hanagios48 root]$ more /home/hdfs/dfsadmin_report.sh
#!/bin/bash
source ~/.bash_profile
today=$(date +%Y%m%d)
#report=`hadoop dfsadmin -report|head -n 11`
report=/tmp/report
echo "Hi,各位叢集使用者
當Hadoop叢集空間使用量達到70%時,各位將會收到Warning郵件,提示清理空間;
當Hadoop叢集空間使用量到達80%時,各位將會收到Critical郵件, 提示清理空間;
為保證叢集資料安全,預留down機冗餘空間,請各位務必清理,如因資料量確實巨大,叢集無法容納,請及時告知營運進行擴容,謝謝!">$report
echo >>$report
hadoop dfsadmin -report|head -n 11 >>$report
echo ---------------------- >>$report
echo dfs used details: >>$report
hadoop fs -du / >>$report
echo >>$report
hadoop fs -du /user >>$report
dfs_used_percent=`cat $report|grep "DFS Used%"|awk -F: '{print $2}'`
dfs_used=`echo ${dfs_used_percent}|awk -F% '{print $1}'`
# 百分百小數比較
#expr ${dfs_used} \>\= 80
user=laijingli2006@126.com
title=`echo "${today}[${dfs_used_percent}] WBY Hadoop Cluster Hdfs Useage Report: dfs_used ${dfs_used_percent}"`
echo $title
if [ $(expr ${dfs_used} \>\= 80) = 1 ];then
echo dfs_used 80
#cat $report|mail -s "Critical: $title" $user
cat $report|/usr/bin/mutt -s "Critical: $title" $user
elif [ $(expr ${dfs_used} \>\= 70) = 1 ];then
echo 70
#cat $report|mail -s "Warning: $title" $user
cat $report|/usr/bin/mutt -s "Warning: $title" $user
else
echo 60
#cat $report|mail -s "Normal: $title" $user
#cat $report|/usr/bin/mutt -s "Normal: $title" $user
fi
#cat $report|mail -s $today DfsReport: dfs_used ${dfs_used_percent} 362560701@qq.com
crontab執行效果還不錯:
[hdfs@hanagios48 root]$ crontab -l
05 8 * * * /home/hdfs/dfsadmin_report.sh
[hdfs@hanagios48 root]$ more /tmp/report
Hi,各位叢集使用者
當Hadoop叢集空間使用量達到70%時,各位將會收到Warning郵件,提示清理空間;
當Hadoop叢集空間使用量到達80%時,各位將會收到Critical郵件,提示清理空間;
為保證叢集資料安全,預留down機冗餘空間,請各位務必清理,如因資料量確實巨大,叢集無法容納,請及時告知營運進行擴容,謝謝!
Configured Capacity: 124854950621184 (113.55 TB)
Present Capacity: 118317151626783 (107.61 TB)
DFS Remaining: 38704545865728 (35.2 TB)
DFS Used: 79612605761055 (72.41 TB)
DFS Used%: 67.29%
Under replicated blocks: 0
Blocks with corrupt replicas: 0
Missing blocks: 0
-------------------------------------------------
Datanodes available: 15 (15 total, 0 dead)
----------------------
dfs used details:
Found 6 items
0 hdfs://hamaster140:9000/benchmarks
125752 hdfs://hamaster140:9000/data0
0 hdfs://hamaster140:9000/system
13721821810608 hdfs://hamaster140:9000/tech
1803375805154 hdfs://hamaster140:9000/tmp
6411197575455 hdfs://hamaster140:9000/user
Found 14 items
33222938 hdfs://hamaster140:9000/user/azk
4072247213805 hdfs://hamaster140:9000/user/cla
40705761240 hdfs://hamaster140:9000/user/din
0 hdfs://hamaster140:9000/user/fea
0 hdfs://hamaster140:9000/user/gao
36454169547 hdfs://hamaster140:9000/user/gmz
1877816487439 hdfs://hamaster140:9000/user/hdf
148965233376 hdfs://hamaster140:9000/user/imp
2416017438 hdfs://hamaster140:9000/user/in
0 hdfs://hamaster140:9000/user/lin
0 hdfs://hamaster140:9000/user/luo
149973222708 hdfs://hamaster140:9000/user/shi
82586246964 hdfs://hamaster140:9000/user/wuy
0 hdfs://hamaster140:9000/user/zho
[hdfs@hanagios48 root]$