在主节点上:绑定到端口8040 java.net.BindException
我有一个2节点集群(hadoop 2.6.0),在主机上的etc/hadoop/salve中有一个主集群(作为salve)和一个从集群。 打完电话在主节点上:绑定到端口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:
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>