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

时间:2014-08-06 06:02:57

标签: hadoop centos yarn

我正在设置一个Hadoop YARN集群,我正在使用一台机器作为主机和从机。当我使用以下命令启动YARN时,它会在从站上启动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

2 个答案:

答案 0 :(得分:2)

在Hadoop发布的默认配置下,端口8040是NodeManager用于本地化程序的端口。这基本上是一个服务器端点,负责将运行容器所需的文件带到本地节点上。 (例如,这可以是MapReduce作业的jar文件或分布式缓存文件。)

假设机器上有另一台服务器(此处显示为Ampify)合法绑定到端口8040,并且您不想停止该服务,则可以重新配置NodeManager用于本地化程序的端口。在yarn-site.xml文件中设置属性yarn.nodemanager.localizer.address。这在此处记录:

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>

答案 1 :(得分:0)

以上错误意味着,您正尝试在8040上启动进程,该进程已被另一个实例占用。

要消除此错误,您需要终止当前正在侦听端口8040的进程。您的lsof输出显示pid为28021.使用以下命令终止进程并重新开始

kill -9 28021