hadoop集群運行一段時間运挫,發(fā)現(xiàn)集群運行緩慢焕议,執(zhí)行df -h顯示:
[hadoop@hadoop7 ~]$ df -h
/dev/mapper/vg_localhost-lv_data? 591G? 66G? 496G? 12% /data
/dev/mapper/vg_localhost-lv_home? 296G? 17G? 264G? 7% /home
/dev/mapper/vg_data1-lv_data1? ? 1.1T? 599G? 445G? 88% /data1
/dev/mapper/vg_data2-lv_data2? ? 1.1T? 591G? 453G? 87% /data2
/dev/mapper/vg_data3-lv_data3? ? 1.1T? 591G? 453G? 87% /data3
磁盤的存儲已經(jīng)達到了百分之80多朋鞍,針對可以有如下解決方案
1.首先寫sh監(jiān)控磁盤中剩,達到80%告警
for i in `df -h |grep /| awk -F " " '{print $5 ";" $6}'`;do
rm -rf disk_bak.txt
echo ${i} >> disk_bak.txt
#占比
number=""
number=`awk -F ";" '{print $1}' disk_bak.txt|tr -d "%"`
if [ ${number} -gt 80 ];then
#磁盤分區(qū)
disk=""
disk=`awk -F ";" '{print $2}' disk_bak.txt`
echo "${IP};${disk};${number}">>disk_log.log
fi
done
直接調(diào)用發(fā)短信接口诫咱,或者把日志disk_log.log發(fā)送郵件,了解集群磁盤情況
2.通過刪除分區(qū)維護hdfs大小
表分區(qū)的建立刃唤,會在hdfs中按照分區(qū)建立文件夾隔心,刪除分區(qū)則刪除了文件夾,查詢hdfs文件得知:
[hadoop@hadoop7 ~]$ hadoop fs -ls /user/hive/warehouse/hive_test_table/op_month=201701/
Found 6 items
drwxrwxr-x+? - dj hadoop? ? ? ? ? 0 2017-01-06 04:46 /user/hive/warehouse/hive_test_table/op_month=201701/op_time=20170104
drwxrwxr-x+? - dj hadoop? ? ? ? ? 0 2017-01-06 10:17 /user/hive/warehouse/hive_test_table/op_month=201701/op_time=20170105
[hadoop@hadoop7 ~]$
執(zhí)行命令:
hive -e "alter table hive_test_table drop partition (op_month=201701,op_time=20170104,op_hour=2017010111);
則刪除了hdfs中的文件透揣。
3.通過hdfs提供的shell接口济炎,通過命令行刪除文件
查詢hdfs中文件占比大小
[hadoop@hadoop7 ~]$ hadoop fs -du /user/hive/warehouse/
272? ? ? ? ? ? 816? ? ? ? ? ? /user/hive/warehouse/admin_hive
92? ? ? ? ? ? 276? ? ? ? ? ? /user/hive/warehouse/admin_hive_external
0? ? ? ? ? ? ? 0? ? ? ? ? ? ? /user/hive/warehouse/brk_d_comp_base_ds
11794905347? ? 35384716041? ? /user/hive/warehouse/hive_test_table
刪除不需要的文件
hadoop fs -rmr /user/hive/warehouse/hive_test_table/*201611*
4.刪錯文件處理方案
如果刪除文件川抡,在hadoop集群中的配置文件core-site.xml配置了:
刪除的文件日志如下:
Moved: 'hdfs://gzcluster/user/hive/warehouse/hive_test_table/20161111' to trash at: hdfs://gzcluster/user/hadoop/.Trash/Current
16/12/23 15:43:21 INFO fs.TrashPolicyDefault: Namenode trash configuration: Deletion interval = 1440 minutes, Emptier interval = 0 minutes
Moved: 'hdfs://gzcluster/bass_cdr' to trash at: hdfs://gzcluster/user/hadoop/.Trash/Current
從日志顯示刪除的文件保存在路徑hdfs://gzcluster/user/hadoop/.Trash/Current中
恢復hdfs文件侍咱,執(zhí)行:
hadoop fs -mv ?/user/ocdc/.Trash/Current/bass_cdr/?/
如上就能回復刪除的文件,當然密幔,要在臨時文件保存時間內(nèi)恢復文件楔脯。