开发环境程序员开源工具技巧

hdfs存储空间维护

2017-02-07  本文已影响438人  DJ_2017

hadoop集群运行一段时间,发现集群运行缓慢,执行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


磁盘的存储已经达到了百分之80多,针对可以有如下解决方案

1.首先写sh监控磁盘,达到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

#磁盘分区

disk=""

disk=`awk -F ";" '{print $2}' disk_bak.txt`

echo "${IP};${disk};${number}">>disk_log.log

fi

done

直接调用发短信接口,或者把日志disk_log.log发送邮件,了解集群磁盘情况


2.通过删除分区维护hdfs大小

表分区的建立,会在hdfs中按照分区建立文件夹,删除分区则删除了文件夹,查询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 ~]$


执行命令:

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配置了:

1440分钟,是如果值为0,则不保存删除的文件,1440代表保留1440分钟

删除的文件日志如下:

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文件,执行:

hadoop fs -mv  /user/ocdc/.Trash/Current/bass_cdr/ /

如上就能回复删除的文件,当然,要在临时文件保存时间内恢复文件。

上一篇下一篇

猜你喜欢

热点阅读