无法在主节点上启动节点管理器

9rnv2umw  于 2021-06-04  发布在  Hadoop
关注(0)|答案(2)|浏览(495)

我正在建立一个hadoopYarn集群,我使用一台机器作为主设备和从设备。当我使用下面的命令启动Yarn时,它会启动从属节点上的nodemanager,而不是主节点上的nodemanager。

sbin/yarn-daemons.sh start nodemanager

我有一个主节点也是从节点,然后集群中还有另外两个从节点,从节点中的节点管理器正常启动。
我得到的错误是:

org.apache.hadoop.yarn.exceptions.YarnRuntimeException: java.net.BindException: Problem binding to [0.0.0.0:8040] java.net.BindException: Address already in use; For more details see:  http://wiki.apache.org/hadoop/BindException

一些命令的输出。

cat /etc/services | grep 8040
ampify          8040/tcp                # Ampify Messaging Protocol
ampify          8040/udp                # Ampify Messaging Protocol

lsof -i tcp:8040
COMMAND   PID USER   FD   TYPE  DEVICE SIZE/OFF NODE NAME
java    28021   df  195u  IPv6 3580602      0t0  TCP server1.mydomain.com:ampify (LISTEN
l7wslrjt

l7wslrjt1#

在hadoop提供的默认配置下,端口8040是nodemanager用于定位器的端口。这基本上是一个服务器端点,负责将运行容器所需的文件带到本地节点(例如,这可以是mapreduce作业的jar文件或分布式缓存文件。)
假设机器上有另一台服务器(这里显示为ampify)合法地绑定到端口8040,并且您不想停止该服务,那么就可以重新配置nodemanager为定位器使用的端口。设置属性 yarn.nodemanager.localizer.address 在yarn-site.xml文件中。这里有记录:
http://hadoop.apache.org/docs/r2.4.1/hadoop-yarn/hadoop-yarn-common/yarn-default.xml
从hadoop树的xml源中提取,以下是属性的文档:

<property>
  <description>Address where the localizer IPC is.</description>
  <name>yarn.nodemanager.localizer.address</name>
  <value>${yarn.nodemanager.hostname}:8040</value>
</property>
31moq8wy

31moq8wy2#

上面的错误意味着,您正试图在8040上启动一个进程,该进程已经被另一个示例占用。
要消除此错误,需要终止当前正在侦听端口8040的进程。你的lsof输出显示pid是28021。使用以下命令终止进程并重新启动

kill -9 28021

相关问题