복붙노트

[HADOOP] 하둡 얀 노드 목록은 슬레이브를 localhost.localdomain : #somenumber로 표시합니다. 연결 거부 예외

HADOOP

하둡 얀 노드 목록은 슬레이브를 localhost.localdomain : #somenumber로 표시합니다. 연결 거부 예외

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

마스터 / 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

슬레이브 / 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

내가 이해 한 것은 master가 localhost의 슬레이브에 잘못 연결하려고한다는 것입니다. 이 문제를 해결하도록 도와주세요. 모든 제안을 부탁드립니다. 고맙습니다.

해결법

  1. ==============================

    1.NodeManager가 NodeId를 빌드하는 방법은 다음과 같습니다.

    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());
    }
    

    NodeManager가 바인딩 주소에서 정식 호스트 이름을 가져 오려고하면 지정된 주소 127.0.0.1로 localhost를 가져옵니다.

    따라서 귀하의 경우 슬레이브 호스트에서 localhost.localdomain은 주소 127.0.0.1의 기본 호스트 이름이며 가능한 해결 방법은 슬레이브에서 / etc / hosts의 첫 번째 줄을 각각 다음과 같이 변경하는 것입니다.

      127.0.0.1  slave1 localhost.localdomain localhost
    

      127.0.0.1  slave2 localhost.localdomain localhost
    
  2. from https://stackoverflow.com/questions/30468637/hadoop-yarn-node-list-shows-slaves-as-localhost-localdomainsomenumber-connect by cc-by-sa and MIT license