복붙노트

[HADOOP] hadoop - namenode에서 연결이 거부되었습니다.

HADOOP

hadoop - namenode에서 연결이 거부되었습니다.

웹과 stackoverflow를 오랫동안 검색했지만 유용하지 않았습니다.

2 노드 클러스터 설정에서 hadoop yarn 2.2.0을 설치했습니다. 하지만 뭔가 잘못되었습니다. master 노드에서 start-dfs.sh와 start-yarn.sh를 사용하여 hadoop 데몬을 시작할 때 마스터와 슬레이브에서 성공적으로 실행됩니다 (내 마스터의 호스트 이름은 RM이고 내 슬레이브의 호스트 이름은 slv 임). 그들은 서로 성공적으로 ssh 수 있습니다. 하지만 작업을 실행하려면이 오류가 나타납니다.

at org.apache.hadoop.ipc.Client.call(Client.java:1347)
at org.apache.hadoop.ipc.Client.call(Client.java:1300)
at org.apache.hadoop.ipc.ProtobufRpcEngine$Invoker.invoke(ProtobufRpcEngine.java:206)
at com.sun.proxy.$Proxy9.addBlock(Unknown Source)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:622)
at org.apache.hadoop.io.retry.RetryInvocationHandler.invokeMethod(RetryInvocationHandler.java:186)
at org.apache.hadoop.io.retry.RetryInvocationHandler.invoke(RetryInvocationHandler.java:102)
at com.sun.proxy.$Proxy9.addBlock(Unknown Source)
at org.apache.hadoop.hdfs.protocolPB.ClientNamenodeProtocolTranslatorPB.addBlock(ClientNamenodeProtocolTranslatorPB.java:330)
at org.apache.hadoop.hdfs.DFSOutputStream$DataStreamer.locateFollowingBlock(DFSOutputStream.java:1226)
at org.apache.hadoop.hdfs.DFSOutputStream$DataStreamer.nextBlockOutputStream(DFSOutputStream.java:1078)
at org.apache.hadoop.hdfs.DFSOutputStream$DataStreamer.run(DFSOutputStream.java:514)

데이터 노드 로그에서이 로그가 존재합니다.

마스터 노드에서 9000 포트를 확인했는데 출력은 다음과 같습니다.

문제는 내가 슬레이브 노드에서

그것은 말한다

하나

출력은 다음과 같습니다.

추가 정보는 master / slave의 my / etc / hosts는 다음과 같습니다 :

아무도 내게 해결책을 제안 할 수 있습니까? 어떤 도움이라도 정말 고맙습니다. 감사

해결법

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

    1.문제는 귀하의 마스터가 127.0.0.1:9000에서 듣고 있기 때문에 데이터 노드가 192.168.1.101:9000에서 청취하지 않기 때문에 연결할 수 없다고 생각합니다 (이론적으로 듣기 좋은 곳은 0.0.0.0:9000이므로 피할 수 있습니다.) 이 문제는 보이지만이 구성은 허용되지 않습니다.)

    문제는 귀하의 마스터가 127.0.0.1:9000에서 듣고 있기 때문에 데이터 노드가 192.168.1.101:9000에서 청취하지 않기 때문에 연결할 수 없다고 생각합니다 (이론적으로 듣기 좋은 곳은 0.0.0.0:9000이므로 피할 수 있습니다.) 이 문제는 보이지만이 구성은 허용되지 않습니다.)

    어쩌면 / etc / hosts를 수정하여 첫 번째 줄을 지우거나 처음에 다음과 같이 시도하십시오 :

    127.0.0.1 localhost
    192.168.1.101 RM
    192.168.1.103 slv
    

    - 편집 : 주석 읽기

  2. ==============================

    2.나는 똑같은 문제가 있었고, 나는 바꿨다.

    나는 똑같은 문제가 있었고, 나는 바꿨다.

    <property>
        <name>fs.defaultFS</name>
        <value>hdfs://localhost:8020</value>
    </property>
    

    core-site.xml의

    <property>
        <name>fs.defaultFS</name>
        <value>hdfs://ip-address:8020</value>
    </property>
    

    그리고 그것은 효과가있다.

  3. ==============================

    3.같은 문제가 발생했습니다. jps를 실행 한 후에는 모든 namenode와 datanode가 실행중인 것을 볼 수 있습니다. 웹 페이지에서 활성 노드를 볼 수는 없습니다. 그리고 127.0.0.1 master를 / etc / hosts에 넣었습니다. 그것을 제거한 후. 노예들은 텔넷 마스터 9000을 사용할 수 있습니다.

    같은 문제가 발생했습니다. jps를 실행 한 후에는 모든 namenode와 datanode가 실행중인 것을 볼 수 있습니다. 웹 페이지에서 활성 노드를 볼 수는 없습니다. 그리고 127.0.0.1 master를 / etc / hosts에 넣었습니다. 그것을 제거한 후. 노예들은 텔넷 마스터 9000을 사용할 수 있습니다.

    내 / etc / hosts는 다음과 같습니다.

    127.0.0.1   localhost
    
    192.168.139.129 slave1
    
    192.168.139.130 slave2
    
    192.168.139.128 master
    
  4. from https://stackoverflow.com/questions/20883564/hadoop-connection-refused-on-namenode by cc-by-sa and MIT license