0%

hadoop单节点磁盘突然占满怎么处理

如果是单个node磁盘被占满,可以排除数据暴增的情况。

那么可能存在一个异常进程,一直在写入磁盘没有被释放。查看已删除空间却没有释放的进程:

1
lsof|grep delete

观察这些异常进程。我的问题是Azkaban任务一直Running,进行手动kill导致。直接将进程kill掉:

1
lsof|grep delete|awk '{print $2}'|xargs kill -9

等待一分钟,若磁盘无明显改善,试试重启hdfs与yarn。当hadoop运行过久,也会出现无法stop与磁盘异常的情况。

如果问题仍未解决,可能是hadoop外其他文件太大,找到df -h 100%所指向的路径,进入路径执行:

1
du -sh * 

看看哪些文件过大,进行删除或转移即可。

还有一种可能是hadoop分配不均衡,这种情况与网络带宽有关,需要进行重均衡:

1
2
3
4
5
#设置带宽:
hdfs dfsadmin -setBalancerBandwidth 20m

#重平衡(调整磁盘使用率偏差值):
sh $HADOOP_HOME/bin/start-balancer.sh –t 10%

该命令为后台进程,不影响当前namenode与数据完整性的前提下,对数据进行重新分配,当节点间使用率差异在10%以内时,hadoop认为达到平衡。该任务一般设置夜间执行,可以设置每日晚间执行一次。

如果此文章有用,就动动小手点个赞吧!