Hadoop纱线节点列表将slave显示为localhost.localdomain:#somenumber.连接拒绝例外

Raj*_*esh 4 hadoop

我尝试运行wordcount程序时,从localhost.localdomain/127.0.0.1到localhost.localdomain:55352有连接拒绝异常.纱线节点 - 列表给出

hduser@localhost:/usr/local/hadoop/etc/hadoop$ yarn node -list
15/05/27 07:23:54 INFO client.RMProxy: Connecting to ResourceManager at master/192.168.111.72:8040
Total Nodes:2
         Node-Id         Node-State Node-Http-Address   Number-of-Running-Containers
localhost.localdomain:32991         RUNNING localhost.localdomain:8042                             0
localhost.localdomain:55352         RUNNING localhost.localdomain:8042                             0
Run Code Online (Sandbox Code Playgroud)

master/etc/hosts:

127.0.0.1    localhost localhost.localdomain localhost4 localhost4.localdomain4
#127.0.1.1    ubuntu-Standard-PC-i440FX-PIIX-1996
192.168.111.72  master
192.168.111.65  slave1
192.168.111.66  slave2

# The following lines are desirable for IPv6 capable hosts
::1     ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
Run Code Online (Sandbox Code Playgroud)

slave/etc/hosts:

127.0.0.1       localhost.localdomain localhost
#127.0.1.1      ubuntu-Standard-PC-i440FX-PIIX-1996
192.168.111.72  master
#192.168.111.65  slave1
#192.168.111.66  slave2

# The following lines are desirable for IPv6 capable hosts
::1     ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
Run Code Online (Sandbox Code Playgroud)

我理解的是master错误地尝试连接到localhost上的slave.请帮我解决这个问题.任何建议表示赞赏.谢谢.

Pin*_*ang 7

是代码如何NodeManager构建NodeId:

private NodeId buildNodeId(InetSocketAddress connectAddress,
  String hostOverride) {
  if (hostOverride != null) {
    connectAddress = NetUtils.getConnectAddress(
      new InetSocketAddress(hostOverride, connectAddress.getPort()));
  }
  return NodeId.newInstance(
    connectAddress.getAddress().getCanonicalHostName(),
    connectAddress.getPort());
}
Run Code Online (Sandbox Code Playgroud)

NodeManager尝试从绑定地址获取规范主机名,localhost将通过给定地址获取127.0.0.1.

因此,在您的情况下,在从属主机上,localhost.localdomain是地址的默认主机名127.0.0.1,可能的解决方案可能是将/etc/hosts从属服务器的第一行分别更改为:

  127.0.0.1  slave1 localhost.localdomain localhost
Run Code Online (Sandbox Code Playgroud)

  127.0.0.1  slave2 localhost.localdomain localhost
Run Code Online (Sandbox Code Playgroud)