在主节点上:绑定到端口8040 java.net.BindException

在主节点上:绑定到端口8040 java.net.BindException,java,hadoop,yarn,Java,Hadoop,Yarn,我有一个2节点集群(hadoop 2.6.0),在主机上的etc/hadoop/salve中有一个主集群(作为salve)和一个从集群。 打完电话 start-yarn.sh jps节目 :~$ jps 11821 SecondaryNameNode 11114 NameNode 12037 ResourceManager 11432 DataNode 12674 Jps 12363 NodeManager 不到一分钟,NodeManager就消失了,只剩下一个BindException:

我有一个2节点集群(hadoop 2.6.0),在主机上的etc/hadoop/salve中有一个主集群(作为salve)和一个从集群。 打完电话

start-yarn.sh 
jps节目

:~$ jps
11821 SecondaryNameNode
11114 NameNode
12037 ResourceManager
11432 DataNode
12674 Jps
12363 NodeManager
不到一分钟,NodeManager就消失了,只剩下一个BindException:日志文件中已经使用的地址(粘贴在下面)。端口8040已打开并由ResourceManager使用

主机上的日志文件

    2014-12-19 17:21:25,185 INFO org.apache.hadoop.metrics2.impl.MetricsSystemImpl: Stopping NodeManager metrics system...
2014-12-19 17:21:25,186 INFO org.apache.hadoop.metrics2.impl.MetricsSystemImpl: NodeManager metrics system stopped.
2014-12-19 17:21:25,186 INFO org.apache.hadoop.metrics2.impl.MetricsSystemImpl: NodeManager metrics system shutdown complete.
2014-12-19 17:21:25,186 FATAL org.apache.hadoop.yarn.server.nodemanager.NodeManager: Error starting 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
    at org.apache.hadoop.yarn.factories.impl.pb.RpcServerFactoryPBImpl.getServer(RpcServerFactoryPBImpl.java:139)
    at org.apache.hadoop.yarn.ipc.HadoopYarnProtoRPC.getServer(HadoopYarnProtoRPC.java:65)
    at org.apache.hadoop.yarn.ipc.YarnRPC.getServer(YarnRPC.java:54)
    at org.apache.hadoop.yarn.server.nodemanager.containermanager.localizer.ResourceLocalizationService.createServer(ResourceLocalizationService.java:356)
    at org.apache.hadoop.yarn.server.nodemanager.containermanager.localizer.ResourceLocalizationService.serviceStart(ResourceLocalizationService.java:334)
    at org.apache.hadoop.service.AbstractService.start(AbstractService.java:193)
    at org.apache.hadoop.service.CompositeService.serviceStart(CompositeService.java:120)
    at org.apache.hadoop.yarn.server.nodemanager.containermanager.ContainerManagerImpl.serviceStart(ContainerManagerImpl.java:450)
    at org.apache.hadoop.service.AbstractService.start(AbstractService.java:193)
    at org.apache.hadoop.service.CompositeService.serviceStart(CompositeService.java:120)
    at org.apache.hadoop.yarn.server.nodemanager.NodeManager.serviceStart(NodeManager.java:264)
    at org.apache.hadoop.service.AbstractService.start(AbstractService.java:193)
    at org.apache.hadoop.yarn.server.nodemanager.NodeManager.initAndStartNodeManager(NodeManager.java:463)
    at org.apache.hadoop.yarn.server.nodemanager.NodeManager.main(NodeManager.java:509)
Caused by: 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
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57)
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
    at java.lang.reflect.Constructor.newInstance(Constructor.java:526)
    at org.apache.hadoop.net.NetUtils.wrapWithMessage(NetUtils.java:791)
    at org.apache.hadoop.net.NetUtils.wrapException(NetUtils.java:720)
    at org.apache.hadoop.ipc.Server.bind(Server.java:424)
    at org.apache.hadoop.ipc.Server$Listener.<init>(Server.java:573)
    at org.apache.hadoop.ipc.Server.<init>(Server.java:2205)
    at org.apache.hadoop.ipc.RPC$Server.<init>(RPC.java:931)
    at org.apache.hadoop.ipc.ProtobufRpcEngine$Server.<init>(ProtobufRpcEngine.java:537)
    at org.apache.hadoop.ipc.ProtobufRpcEngine.getServer(ProtobufRpcEngine.java:512)
    at org.apache.hadoop.ipc.RPC$Builder.build(RPC.java:776)
    at org.apache.hadoop.yarn.factories.impl.pb.RpcServerFactoryPBImpl.createServer(RpcServerFactoryPBImpl.java:169)
    at org.apache.hadoop.yarn.factories.impl.pb.RpcServerFactoryPBImpl.getServer(RpcServerFactoryPBImpl.java:132)
    ... 13 more
Caused by: java.net.BindException: Address already in use
    at sun.nio.ch.Net.bind0(Native Method)
    at sun.nio.ch.Net.bind(Net.java:444)
    at sun.nio.ch.Net.bind(Net.java:436)
    at sun.nio.ch.ServerSocketChannelImpl.bind(ServerSocketChannelImpl.java:214)
    at sun.nio.ch.ServerSocketAdaptor.bind(ServerSocketAdaptor.java:74)
    at org.apache.hadoop.ipc.Server.bind(Server.java:407)
    ... 21 more
2014-12-19 17:21:25,189 INFO org.apache.hadoop.yarn.server.nodemanager.NodeManager: SHUTDOWN_MSG

BindException-地址已在使用中-这表示端口8040正忙,正在被其他进程使用。您可以通过更改文件
etc/hadoop/warn site.xml
中的默认纱线端口来克服此问题,如下所示:

<property>
    <name>yarn.nodemanager.localizer.address</name>
    <value>192.168.179.58:10200</value>
</property>

纱线.nodemanager.localizer.address
192.168.179.58:10200

尝试使用
netstat
来发现绑定到8040的内容。
lsof-i:8040
显示8040由
pid:12037
使用,根据Master上的jps日志(如问题中所示),它是Resourcemanager。我需要在salve机器上更改相同的内容吗?因为节点管理器在从机上启动。在NM运行的任何位置都可以。在Thread-site.xml文件中添加给定属性后,仍然存在相同的问题。节点管理器在主机上处于活动状态,或者在从机上处于活动状态。Nodemanager在两个从机上启动,但在其中一个从机上死亡,出现错误
java.net.BindException:无法分配请求的地址为什么有多个NM实例?你只需要一个实例。纠正我的理解,“客户端->资源管理器->节点管理器->应用程序主机”在多节点集群上(2个从机)。这意味着如果从机是两台机器,那么我们需要在每台机器上安装一个NM?
<property>
    <name>yarn.nodemanager.localizer.address</name>
    <value>192.168.179.58:10200</value>
</property>