복붙노트

[HADOOP] Hadoop 데이터 노드가 NameNode를 찾을 수 없습니다.

HADOOP

Hadoop 데이터 노드가 NameNode를 찾을 수 없습니다.

필자는 버추얼 박스 내에 분산 Hadoop 환경을 설정했다 : 가상 Ubuntu 11.10 설치 4 개 (마스터 노드 역할, 나머지 3 개는 슬레이브). 이 튜토리얼을 따라 단일 노드 버전을 실행하고 완전히 분산 된 버전으로 변환했다. 나가 11.04를 달릴 때 그것은 잘 작동하고 있었다; 그러나, 내가 11.10으로 업그레이드했을 때, 그것은 깨졌습니다. 이제 모든 내 노예의 로그에 다음과 같은 오류 메시지가 반복적으로 나타납니다.

INFO org.apache.hadoop.ipc.Client: Retrying connect to server: master/192.168.1.10:54310. Already tried 0 time(s).
INFO org.apache.hadoop.ipc.Client: Retrying connect to server: master/192.168.1.10:54310. Already tried 1 time(s).
INFO org.apache.hadoop.ipc.Client: Retrying connect to server: master/192.168.1.10:54310. Already tried 2 time(s).

등등. 이 오류 메시지의 다른 인스턴스가 인터넷 (및 StackOverflow)에서 발견되었지만 해결 방법이 없습니다 (core-site.xml 및 mapred-site.xml 항목을 hostname이 아닌 IP 주소로 변경하려고 시도했지만 쿼드 러플 모든 슬레이브 및 마스터에서 / etc / hosts를 확인하고 마스터는 모든 슬레이브에 대해 암호가없는 SSH를 수행 할 수 있음). 나는 각 슬레이브를 단일 노드 설정으로 되 돌리려고했는데,이 경우에는 모두 잘 동작 할 것이다. (참고로 마스터는 항상 데이터 노드와 네임 노드로 잘 동작한다.)

텔넷 192.168.1.10 54310을 시도 할 때 어떤 노예 에게서든 연결을 거부하는 것으로 보이는 유일한 증상은 Connection이 거부했기 때문에 액세스를 차단하는 규칙이 있다는 것입니다. 11.10으로 업그레이드했을 때 효과가 있음).

그러나 내 /etc/hosts.allow는 변경되지 않았습니다. 나는 규칙 ALL : 192.168.1을 시도했으나 행동을 바꾸지 않았다.

오 예, 마스터의 netstat은 TCP 포트 54310 및 54311이 수신 대기중인 것을 분명히 보여줍니다.

누구나 슬레이브 데이터 노드가 네임 노드를 인식하도록하는 제안이 있습니까?

편집 # 1 : NMAP (이 게시물에 대한 의견 참조) 주위에 몇 가지 일을하면서, 나는 / etc / hosts 파일에 문제가 있다고 생각하고있다. 이것은 마스터 VM에 대해 나열된 것입니다.

127.0.0.1    localhost
127.0.1.1    master
192.168.1.10 master
192.168.1.11 slave1
192.168.1.12 slave2
192.168.1.13 slave3

각 슬레이브 VM마다 :

127.0.0.1    localhost
127.0.1.1    slaveX
192.168.1.10 master
192.168.1.1X slaveX

불행히도, 내가 무엇을 바꿨는지 모르겠지만 NameNode는 이제 "이미 사용중인"포트 (127.0.1.1:54310)를 바인딩하려고 시도하는 것을 제외하고는 항상 죽어 가고 있습니다. 분명히 호스트 이름과 IP 주소에 문제가있는 것은 분명하지만 실제로 무엇인지 확신 할 수 없습니다. 생각?

해결법

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

    1.찾았어요! / etc / hosts 파일의 두 번째 줄 (127.0.1.1 항목이있는 항목)을 주석으로 처리하면 netstat는 로컬 노드 대신 192.168.1.10 주소에 바인드 된 NameNode 포트를 보여주고 슬레이브 VM은이를 찾았습니다. Ahhhhhhhh. 신비가 풀렸다! 모든 사람의 도움에 감사드립니다.

    찾았어요! / etc / hosts 파일의 두 번째 줄 (127.0.1.1 항목이있는 항목)을 주석으로 처리하면 netstat는 로컬 노드 대신 192.168.1.10 주소에 바인드 된 NameNode 포트를 보여주고 슬레이브 VM은이를 찾았습니다. Ahhhhhhhh. 신비가 풀렸다! 모든 사람의 도움에 감사드립니다.

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

    2.이 솔루션은 나를 위해 일했습니다. 즉, core-site.xml 및 mapred-site.xml에서 속성에 사용한 이름을 확인하십시오.

    이 솔루션은 나를 위해 일했습니다. 즉, core-site.xml 및 mapred-site.xml에서 속성에 사용한 이름을 확인하십시오.

    <property>
       <name>fs.default.name</name>
       <value>hdfs://master:54310</value>
       <final>true</final>
     </property>
    

    즉 master는 / etc / hosts에 양쪽 마스터 및 슬레이브 노드의 xyz.xyz.xyz.xyz master로 정의됩니다. 그런 다음 namenode를 다시 시작하고 다음을 사용하여 확인하십시오. netstat -tuplen "외부"IP 주소에 바인딩되어 있는지 확인합니다.

    tcp        0      xyz.xyz.xyz.xyz:54310         0.0.0.0:*                   LISTEN      102        107203     - 
    

    로컬 IP 192.168.x.y 또는 127.0.x.y가 아닙니다.

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

    3.나는 똑같은 문제가 있었다. @Magsol 솔루션은 효과가 있었지만 주석 처리해야 할 항목은 다음과 같습니다.

    나는 똑같은 문제가 있었다. @Magsol 솔루션은 효과가 있었지만 주석 처리해야 할 항목은 다음과 같습니다.

    127.0.1.1 masterxyz

    슬레이브의 127.0.1.1이 아니라 마스터 머신에서 실행되었습니다. 또한 hadoop에 대해서는 stopall.sh와 startall.sh가 필요합니다.

    hadoop을 다시 시작한 다음 여기에 노드 마스터를 확인하십시오. http : // masterxyz : 50030 / jobtracker.jsp

    작업에 사용할 수있는 노드의 수를 살펴보십시오.

  4. ==============================

    4.이 응답은 저자가 찾고있는 해결책이 아니지만 다른 사용자가이 페이지에 착륙 할 수도 있습니다. 따라서 AWS를 사용하여 클러스터를 설정하는 경우 AWS Security에서 ICMP 보안 규칙이 활성화되지 않은 것일 수 있습니다 그룹 페이지. 다음을보십시오 : EC2 인스턴스 핑 (ping)

    이 응답은 저자가 찾고있는 해결책이 아니지만 다른 사용자가이 페이지에 착륙 할 수도 있습니다. 따라서 AWS를 사용하여 클러스터를 설정하는 경우 AWS Security에서 ICMP 보안 규칙이 활성화되지 않은 것일 수 있습니다 그룹 페이지. 다음을보십시오 : EC2 인스턴스 핑 (ping)

    위는 데이터 노드에서 마스터 노드로의 연결 문제를 해결했습니다. 각 인스턴스간에 ping을 수행 할 수 있는지 확인하십시오.

  5. ==============================

    5.나는 또한 비슷한 문제에 직면했다. (나는 우분투 17.0을 사용하고있다) / etc / hosts 파일에 마스터 및 슬레이브 항목 만 보관했습니다. (마스터 및 슬레이브 기계 모두에서)

    나는 또한 비슷한 문제에 직면했다. (나는 우분투 17.0을 사용하고있다) / etc / hosts 파일에 마스터 및 슬레이브 항목 만 보관했습니다. (마스터 및 슬레이브 기계 모두에서)

    127.0.0.1  localhost
    192.168.201.101 master
    192.168.201.102 slave1
    192.168.201.103 slave2
    

    둘째,> sudo gedit /etc/hosts.allow 엔트리를 추가하십시오 : ALL : 192.168.201.

    셋째, sudo ufw disable을 사용하여 방화벽을 비활성화합니다.

    마지막으로 cluster의 모든 노드에서 namenode 및 datanode 폴더를 모두 삭제하고 다시 실행했습니다.

    $HADOOP_HOME/bin> hdfs namenode -format -force
    $HADOOP_HOME/sbin> ./start-dfs.sh
    $HADOOP_HOME/sbin> ./start-yarn.sh
    

    명령 줄에서 상태 보고서를 확인하려면 (권장)

    $HADOOP_HOME/bin> hdfs dfsadmin -report
    

    모든 노드가 제대로 작동하고 있습니다.

  6. ==============================

    6.2 노드 클러스터를 실행 중입니다.

    2 노드 클러스터를 실행 중입니다.

    마스터 192.168.0.24 192.168.0.26 작업자 2

    재시도 중 서버 : master / 192.168.0.24 : 54310 내 worker2 컴퓨터 로그에 동일한 문제가 발생했습니다. 그러나 위에서 언급 한 사람들은이 명령을 실행하는 중에 오류가 발생했습니다 - telnet 192.168.0.24 54310. 그러나 제 경우에는 telnet 명령이 정상적으로 작동합니다. 그런 다음 / etc / hosts 파일을 검사했습니다.

    마스터 / etc / hosts 127.0.0.1 localhost 192.168.0.24 우분투 마스터 192.168.0.24 192.168.0.26 작업자 2

    worker2 / etc / hosts 127.0.0.1 localhost 192.168.0.26 우분투 마스터 192.168.0.24 192.168.0.26 작업자 2

    마스터에서 http : // localhost : 50070을 클릭하면 라이브 노드를 보았습니다. 2.하지만 클릭하면 마스터 노드 중 하나 인 데이터 노드 만 보았습니다. master와 worker2에서 jps를 확인했습니다. 데이터 노드 프로세스가 두 시스템에서 실행 중이었습니다.

    몇 번의 시행 착오 끝에 마스터와 worker2 머신이 동일한 호스트 이름 인 "우분투"를 가지고 있음을 깨달았습니다. worker2의 호스트 이름을 "우분투"에서 "worker2"로 변경하고 "우분투"항목을 worker2 컴퓨터에서 제거했습니다.

    참고 : 호스트 이름을 변경하려면 / etc / hostname을 sudo로 편집하십시오.

    빙고! 그것은 작동했습니다 :) dfshealth UI 페이지 (locahost : 50070)에서 두 개의 datanode를 볼 수있었습니다.

  7. from https://stackoverflow.com/questions/8872807/hadoop-datanodes-cannot-find-namenode by cc-by-sa and MIT license