복붙노트

[HADOOP] 실행중인 데이터 노드가 0 개이고이 작업에서 노드가 제외되지 않았습니다.

HADOOP

실행중인 데이터 노드가 0 개이고이 작업에서 노드가 제외되지 않았습니다.

다중 노드 Hadoop 클러스터를 설정했습니다. NameNode 및 Secondary namenode는 동일한 시스템에서 실행되며 클러스터에는 하나의 데이터 노드 만 있습니다. 모든 노드는 Amazon EC2 시스템에서 구성됩니다.

masters
54.68.218.192 (public IP of the master node)

slaves
54.68.169.62 (public IP of the slave node)

core-site.xml

<configuration>
<property>
<name>fs.default.name</name>
<value>hdfs://localhost:9000</value>
</property>
</configuration>

mapred-site.xml

<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>

hdfs-site.xml

<configuration>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>file:/usr/local/hadoop_store/hdfs/namenode</value>
</property>
<property>
<name>dfs.datanode.name.dir</name>
<value>file:/usr/local/hadoop_store/hdfs/datanode</value>
</property>
</configuration>

core-site.xml

<configuration>
<property>
<name>fs.default.name</name>
<value>hdfs://54.68.218.192:10001</value>
</property>
</configuration>

mapred-site.xml

<configuration>
<property>
<name>mapred.job.tracker</name>
<value>54.68.218.192:10002</value>
</property>
</configuration>

hdfs-site.xml

<configuration>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>file:/usr/local/hadoop_store/hdfs/namenode</value>
</property>
<property>
<name>dfs.datanode.name.dir</name>
<value>file:/usr/local/hadoop_store/hdfs/datanode</value>
</property>
</configuration>

네임 노드에서 실행되는 jps는 다음을 제공합니다.

5696 NameNode
6504 Jps
5905 SecondaryNameNode
6040 ResourceManager

및 datanode에 jps :

2883 DataNode
3496 Jps
3381 NodeManager

나에게 옳은 것처럼 보인다.

이제 put 명령을 실행하려고 할 때 :

hadoop fs -put count_inputfile /test/input/

그것은 나에게 다음과 같은 오류를 준다 :

put: File /count_inputfile._COPYING_ could only be replicated to 0 nodes instead of minReplication (=1).  There are 0 datanode(s) running and no node(s) are excluded in this operation.

데이터 노드의 로그에는 다음 내용이 나와 있습니다.

hadoop-datanode log
INFO org.apache.hadoop.ipc.Client: Retrying connect to server:      54.68.218.192/54.68.218.192:10001. Already tried 8 time(s); retry policy is RetryUpToMaximumCountWithFixedSleep(maxRetries=10, sleepTime=1000 MILLISECONDS)

원사 - 노드 매니저 로그 :

INFO org.apache.hadoop.ipc.Client: Retrying connect to server: 0.0.0.0/0.0.0.0:8031. Already tried 9 time(s); retry policy is RetryUpToMaximumCountWithFixedSleep(maxRetries=10, sleepTime=1000 MILLISECONDS)

노드 관리자 (50070)의 웹 UI는 라이브 노드가 0 개이고 데드 노드가 0 개이고 사용 된 dfs가 100 %

나는 또한 IPV6를 사용할 수 없게했다.

몇몇 웹 사이트에서 / etc / hosts 파일을 편집해야한다는 것을 알았습니다. 나는 또한 그들을 편집했고 그들은 다음과 같이 보였다 :

127.0.0.1 localhost
172.31.25.151 ip-172-31-25-151.us-west-2.compute.internal
172.31.25.152 ip-172-31-25-152.us-west-2.compute.internal

왜 아직도 오류가 발생합니까?

해결법

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

    1.나를 위해 두 가지가 효과가있었습니다.

    나를 위해 두 가지가 효과가있었습니다.

    1 단계 : hduser에서 hadoop을 중지하고 임시 파일을 정리합니다.

    sudo rm -R /tmp/*
    

    또한 / app / hadoop / tmp를 삭제하고 다시 만들어야 할 수도 있습니다 (주로 hadoop 버전을 2.2.0에서 2.7.0으로 변경)

    sudo rm -r /app/hadoop/tmp
    sudo mkdir -p /app/hadoop/tmp
    sudo chown hduser:hadoop /app/hadoop/tmp
    sudo chmod 750 /app/hadoop/tmp
    

    2 단계 : 목적을위한 형식

    hdfs namenode -format
    

    이제 DataNode를 볼 수 있습니다.

    hduser@prayagupd:~$ jps
    19135 NameNode
    20497 Jps
    19477 DataNode
    20447 NodeManager
    19902 SecondaryNameNode
    20106 ResourceManager
    
  2. ==============================

    2.부적절한 노드 종료 후 같은 문제가 발생했습니다. 또한 UI에서 데이터 노드가 나열되지 않습니다.

    부적절한 노드 종료 후 같은 문제가 발생했습니다. 또한 UI에서 데이터 노드가 나열되지 않습니다.

    이제 datanode 폴더에서 파일을 삭제하고 서비스를 다시 시작한 후에 작동합니다.

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

    3.@Learner, 네 네 노드의 웹 UI에 표시되지 않은 datanode 문제가있었습니다. Hadoop 2.4.1에서이 단계를 통해 문제를 해결했습니다. 모든 노드 (마스터 및 슬레이브)에 대해 다음을 수행하십시오. 1. 모든 임시 파일을 제거하십시오 (기본적으로 / tmp) - sudo rm -R / tmp / *. 2. 이제 ssh username @ host를 사용하여 ssh를 통해 모든 노드에 연결하고 ssh-copy-id -i ~ / .ssh / id_rsa.pub username @ host를 사용하여 마스터에 키를 추가하여 마스터에 대한 제한없는 액세스를 제공합니다 (그렇게하지 않으면 연결을 거부 할 때 문제가 될 수 있습니다.) 3. hadoop namenode -format을 사용하여 namenode를 형식화하고 데몬을 다시 시작하십시오.

    @Learner, 네 네 노드의 웹 UI에 표시되지 않은 datanode 문제가있었습니다. Hadoop 2.4.1에서이 단계를 통해 문제를 해결했습니다. 모든 노드 (마스터 및 슬레이브)에 대해 다음을 수행하십시오. 1. 모든 임시 파일을 제거하십시오 (기본적으로 / tmp) - sudo rm -R / tmp / *. 2. 이제 ssh username @ host를 사용하여 ssh를 통해 모든 노드에 연결하고 ssh-copy-id -i ~ / .ssh / id_rsa.pub username @ host를 사용하여 마스터에 키를 추가하여 마스터에 대한 제한없는 액세스를 제공합니다 (그렇게하지 않으면 연결을 거부 할 때 문제가 될 수 있습니다.) 3. hadoop namenode -format을 사용하여 namenode를 형식화하고 데몬을 다시 시작하십시오.

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

    4.내 상황에서는 firewalld 서비스가 실행 중이었습니다. 기본 구성이었습니다. 그리고 노드 사이의 통신을 허용하지 않습니다. 내 hadoop 클러스터는 테스트 클러스터였습니다. 이 때문에 서비스를 중단했습니다. 서버가 프로덕션 환경에 있다면, 대신 firewalld에 hadoop 포트를 허용해야합니다.

    내 상황에서는 firewalld 서비스가 실행 중이었습니다. 기본 구성이었습니다. 그리고 노드 사이의 통신을 허용하지 않습니다. 내 hadoop 클러스터는 테스트 클러스터였습니다. 이 때문에 서비스를 중단했습니다. 서버가 프로덕션 환경에 있다면, 대신 firewalld에 hadoop 포트를 허용해야합니다.

    service firewalld stop
    chkconfig firewalld off
    
  5. ==============================

    5.나는 같은 오류가 있었다. hdfs 파일 시스템에 대한 권한이 없습니다. 그래서 내 사용자에게 권한을 부여합니다.

    나는 같은 오류가 있었다. hdfs 파일 시스템에 대한 권한이 없습니다. 그래서 내 사용자에게 권한을 부여합니다.

    chmod 777 /usr/local/hadoop_store/hdfs/namenode
    chmod 777 /usr/local/hadoop_store/hdfs/datanode
    
  6. ==============================

    6.필자의 경우, MacOS에서 HomeBrew를 사용하여 설치된 hdfs-site.xml (Hadoop 3.0.0)에 필요한 속성이 누락되었습니다. (파일 : ///은 오타가 아닙니다.)

    필자의 경우, MacOS에서 HomeBrew를 사용하여 설치된 hdfs-site.xml (Hadoop 3.0.0)에 필요한 속성이 누락되었습니다. (파일 : ///은 오타가 아닙니다.)

    <property>
        <name>dfs.namenode.name.dir</name>
        <value>file:///usr/local/Cellar/hadoop/hdfs/namenode</value>
    </property>
    
    <property>
        <name>dfs.datanode.data.dir</name>
        <value>file:///usr/local/Cellar/hadoop/hdfs/datanode</value>
    </property>
    
  7. ==============================

    7.이는 아마도 데이터 노드와 namenode 또는 노드 관리자의 클러스터 ID가 일치하지 않기 때문일 수 있습니다. 클러스터 ID는 namenode 및 datanodes에있는 VERSION 파일에서 볼 수 있습니다.

    이는 아마도 데이터 노드와 namenode 또는 노드 관리자의 클러스터 ID가 일치하지 않기 때문일 수 있습니다. 클러스터 ID는 namenode 및 datanodes에있는 VERSION 파일에서 볼 수 있습니다.

    이것은 namenode를 포맷 한 다음 클러스터를 다시 시작했지만 datanodes가 여전히 이전 clusterID를 사용하여 연결을 시도 할 때 발생합니다. 성공적으로 연결 되려면 노드에서 올바른 IP 주소와 일치하는 클러스터 ID가 필요합니다.

    따라서 namenode와 datanode를 다시 포맷하거나 새로 생성 된 폴더에서 datanode와 namenode를 설정하십시오.

    그것은 당신의 문제를 해결해야합니다.

    현재 datanodes 폴더에서 파일을 삭제하면 이전 VERSION 파일도 제거되고 namenode로 다시 연결하는 동안 새 VERSION 파일을 요청합니다.

    구성에서 datanode 디렉토리의 예는 / hadoop2 / datanode입니다.

    $ rm -rvf /hadoop2/datanode/*
    

    그런 다음 서비스를 다시 시작하십시오. 당신이 namenode를 다시 포맷한다면이 단계 전에 그것을하십시오. 네임 노드를 다시 포맷 할 때마다 새 ID가 생성되고 해당 ID가 무작위로 생성되어 데이터 노드의 이전 ID와 일치하지 않습니다

    따라서 매번이 순서를 따르십시오.

  8. ==============================

    8.master 및 slave 시스템의 core-site.xml에있는 {fs.default.name} 등록 정보의 값은 마스터 시스템을 가리켜 야합니다. 그래서 그것은 다음과 같이 될 것입니다 :

    master 및 slave 시스템의 core-site.xml에있는 {fs.default.name} 등록 정보의 값은 마스터 시스템을 가리켜 야합니다. 그래서 그것은 다음과 같이 될 것입니다 :

    <property>
         <name>fs.default.name</name>
         <value>hdfs://master:9000</value>
    </property>
    

    여기서 master는 마스터 노드를 가리키는 / etc / hosts 파일의 호스트 이름입니다.

  9. ==============================

    9./ tmp 폴더 지우기를 시도 했습니까?

    / tmp 폴더 지우기를 시도 했습니까?

    정리하기 전에 데이터 노드가 나타나지 않았습니다.

    86528 SecondaryNameNode
    87719 Jps
    86198 NameNode
    78968 RunJar
    79515 RunJar
    63964 RunNiFi
    63981 NiFi
    

    청소 후

    sudo rm -rf /tmp/*
    

    그것은 나를 위해 일했다.

    89200 Jps
    88859 DataNode
    
  10. ==============================

    10.@mustafacanturk 솔루션, 방화벽을 비활성화 나를 위해 일했습니다. 나는 datanodes가 jps를 실행할 때 나타나기 때문에 시작했지만 파일을 업로드하려고 할 때 "0 nodes running"이라는 메시지를 받았다고 생각했습니다. 실제로 웹 인터페이스 (http : // nn1 : 50070)는 방화벽 때문에 작동하지 않았습니다. hadoop을 설치할 때 방화벽을 비활성화했지만 어떤 이유로 방화벽이 작동하지 않았습니다. 절대로 임시 폴더 (hadoop.tmp.dir) 또는 dfs.data.dir 및 dfs.namenode.name.dir 폴더를 정리하거나 다시 만들고 네임 서버를 다시 구성하는 것이 해결책이었습니다.

    @mustafacanturk 솔루션, 방화벽을 비활성화 나를 위해 일했습니다. 나는 datanodes가 jps를 실행할 때 나타나기 때문에 시작했지만 파일을 업로드하려고 할 때 "0 nodes running"이라는 메시지를 받았다고 생각했습니다. 실제로 웹 인터페이스 (http : // nn1 : 50070)는 방화벽 때문에 작동하지 않았습니다. hadoop을 설치할 때 방화벽을 비활성화했지만 어떤 이유로 방화벽이 작동하지 않았습니다. 절대로 임시 폴더 (hadoop.tmp.dir) 또는 dfs.data.dir 및 dfs.namenode.name.dir 폴더를 정리하거나 다시 만들고 네임 서버를 다시 구성하는 것이 해결책이었습니다.

  11. ==============================

    11.어쩌면 방화벽 서비스가 중지되지 않았을 수도 있습니다.

    어쩌면 방화벽 서비스가 중지되지 않았을 수도 있습니다.

  12. ==============================

    12.1) 명령을 사용하여 모든 서비스를 먼저 중지하십시오. stop-all.sh

    1) 명령을 사용하여 모든 서비스를 먼저 중지하십시오. stop-all.sh

    2) 데이터 노드 내부의 모든 파일 삭제 rm -rf / usr / local / hadoop_store / hdfs / datanode / *

    3) 그런 다음 명령을 사용하여 모든 서비스를 시작하십시오. 시작 --all.sh

    jps 명령을 사용하여 모든 서비스가 실행 중인지 확인할 수 있습니다.

    희망이 작동합니다!

  13. from https://stackoverflow.com/questions/26545524/there-are-0-datanodes-running-and-no-nodes-are-excluded-in-this-operation by cc-by-sa and MIT license