1、问题
前几天因为一个hive SQL的问题,导致其中很多节点机器的磁盘空间不足,job执行结束后,临时文件删除解决了空间不足的问题;
查看发现出现了一个unhealty节点,错误信息如下
1/4 local-dirs turned bad: /data1/hadoop/yarn/local;1/4 log-dirs turned bad: /data1/hadoop/yarn/log
虽然空间问题解决了,但是unhealthy节点确没有恢复;
2、原因
NodeManager默认会每两分钟检查本地磁盘(local-dirs),找出那些目录可以使用。注意如果判定这个磁盘不可用,则在重启NodeManager之前,就算磁盘好了,也不会把它变成可用。代码在LocalDirsHandlerService,DirectoryCollection。
当好磁盘数少于一定量时,会把这台机器变成unhealthy,将不会再给这台机器分配任务。
3、解决
重启nodemanager:
sbin/yarn-daemon.sh stop nodemanager
sbin/yarn-daemon.sh start nodemanager
重启resourcemanager(否则会导致修改的节点状态错乱)
sbin/yarn-daemon.sh stop resourcemanager
sbin/yarn-daemon.sh start resourcemanager
刷新页面,unhealthy的nodemanager已经消失。
或者
修改hadoop的core-site.xml配置文件中一下内容,即将hadoop.tmp.dir的目录配置到一个空间足够的目录下:
hadoop.tmp.dir
/home/hadoop_tmp
命令显示yarn各节点状态:
yarn node -list -all
参考:http://blog.csdn.net/lazythinker/article/details/47832117
阅读(5542) | 评论(0) | 转发(0) |