1、问题来源
前几天因为一个hive SQL的问题,导致其中一台机器的磁盘空间不足,删除临时文件解决了空间不足的问题;
查看http://hadoop/cluster/nodes/unhealthy 发现出现了一个unhealty节点,错误信息如下
1/1 local-dirs turned bad: /usr/local/goldmine/hadoop/tmp/nm-local-dir;
1/1 log-dirs turned bad: /usr/local/goldmine/hadoop/hadoop-2.4.0/logs/userlogs
虽然空间问题解决了,但是unhealthy节点确没有恢复;
NodeManager默认会每两分钟检查本地磁盘(local-dirs),找出那些目录可以使用。注意如果判定这个磁盘不可用,则在重启NodeManager之前,就算磁盘好了,也不会把它变成可用。代码在LocalDirsHandlerService,DirectoryCollection。
当好磁盘数少于一定量时,会把这台机器变成unhealthy,将不会再给这台机器分配任务。
3、解决方案-重启相关服务
3.1 重启nodemanager:
/usr/local/goldmine/hadoop/default/sbin/yarn-daemon.sh stop nodemanager
/usr/local/goldmine/hadoop/default/sbin/yarn-daemon.sh start nodemanager
3.2 重启resourcemanager,(否则会导致修改的节点状态错乱)
/usr/local/goldmine/hadoop/default/sbin/yarn-daemon.sh stop resourcemanager
/usr/local/goldmine/hadoop/default/sbin/yarn-daemon.sh start resourcemanager
3.3 刷新http://hadoop/cluster/nodes/unhealthy页面:
可以看到不健康的nodemanager已经消失在列表了。
3.4 命令显示yarn各节点状态:
yarn node -list -all
参考:
2、hadoop-2.6.0 Unhealthy Nodes 问题,hadoop2.6.0安装