问题如题,查看hadoop/logs下nodemanager的日志(日志位置:hadoop安装目录/logs/yarn-root-nodemanager-slave1.log)
描述如下:
java.net.ConnectException: Call From slave1/192.168.146.128 to 0.0.0.0:8031 failed on connection exception: java.net.ConnectException: Connection refused;
原因:nodemanager启动后要通过心跳机制定期与ResourceManager通信,否则ResourceManager会认为nodemanager死掉,停止nodemanager的服务。正常情况下我的nodemanager应该与ResourceManager通信,但是nodemanager却一直与0.0.0.0通信。因此查阅官方默认的yarn-site.xml配置文件,发现其中yarn.resourcemanager.hostname的默认值被设置成:0.0.0.0了(怪不得一直与0.0.0.0通信),发现原来是我设置的主机ip在这里没有生效。
解决办法:在yarn-site.xml中添加一项新的项,将yarn.resourcemanager.hostname的值修改为master机器的ip地址。
</property>
<property>
<name>yarn.resourcemanager.hostname</name>
<value>master</value>
</property>
之后重启hadoop服务。