安装好了Hadoop,Java程序运行没有问题,但是运行Python程序却始终被挂起,由于本来就不太懂Hadoop的机制,在这个地方卡了很久。后来查看任务状况,发现有人说可能是结点状态为Unhealthy,运行下面命令
yarn node -list -all
看到的情况果然是所有结点皆为Unhealthy(也可点击下图中红圈的数字看到哪些结点是Unhealthy)
那现在的问题是如何解决Unhealthy
综合网上的说法,主要是空间不足,我的虚拟机安装时只提供了8G的空间,目前只有几百MB剩下,网上没有人说过最少要多少,反正几百MB肯定是不行了。
最初在日志里或Web页面里发现有两个错误:类似下面这样的内容
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.8.5/logs/userlogs
很明显:local-dirs、log-dirs空间不足,这里也卡住了很久,bad要说是坏的意思,目录坏了,怎么理解成空间不足呢?
首先想到的是添加一个虚拟硬盘,将该磁盘分区并格式化后挂载到dfs的data目录
其次在上面的tmp目录、logs目录分别创建一个符号链接(也可以修改配置文件,以便指向别的地方)指向上面的虚拟磁盘分区目录里
重新启动yarn,最后就变成了RUNNING状态了。
总结:
磁盘空间检查问题,不但涉及到dfs/data目录,还涉及到hadoop下的tmp目录,以及logs下的userlogs目录。
因此将来在生产线上部署时应尽早规划好这几个目录的磁盘空间,免得后期维护麻烦。
如果你对本文有疑问,请留言。(毕竟中间的解决步骤只说了操作思路)