[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 단계 : 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.부적절한 노드 종료 후 같은 문제가 발생했습니다. 또한 UI에서 데이터 노드가 나열되지 않습니다.
부적절한 노드 종료 후 같은 문제가 발생했습니다. 또한 UI에서 데이터 노드가 나열되지 않습니다.
이제 datanode 폴더에서 파일을 삭제하고 서비스를 다시 시작한 후에 작동합니다.
-
==============================
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.내 상황에서는 firewalld 서비스가 실행 중이었습니다. 기본 구성이었습니다. 그리고 노드 사이의 통신을 허용하지 않습니다. 내 hadoop 클러스터는 테스트 클러스터였습니다. 이 때문에 서비스를 중단했습니다. 서버가 프로덕션 환경에 있다면, 대신 firewalld에 hadoop 포트를 허용해야합니다.
내 상황에서는 firewalld 서비스가 실행 중이었습니다. 기본 구성이었습니다. 그리고 노드 사이의 통신을 허용하지 않습니다. 내 hadoop 클러스터는 테스트 클러스터였습니다. 이 때문에 서비스를 중단했습니다. 서버가 프로덕션 환경에 있다면, 대신 firewalld에 hadoop 포트를 허용해야합니다.
service firewalld stop chkconfig firewalld off
-
==============================
5.나는 같은 오류가 있었다. hdfs 파일 시스템에 대한 권한이 없습니다. 그래서 내 사용자에게 권한을 부여합니다.
나는 같은 오류가 있었다. hdfs 파일 시스템에 대한 권한이 없습니다. 그래서 내 사용자에게 권한을 부여합니다.
chmod 777 /usr/local/hadoop_store/hdfs/namenode chmod 777 /usr/local/hadoop_store/hdfs/datanode
-
==============================
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.이는 아마도 데이터 노드와 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.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./ 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.@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.어쩌면 방화벽 서비스가 중지되지 않았을 수도 있습니다.
어쩌면 방화벽 서비스가 중지되지 않았을 수도 있습니다.
-
==============================
12.1) 명령을 사용하여 모든 서비스를 먼저 중지하십시오. stop-all.sh
1) 명령을 사용하여 모든 서비스를 먼저 중지하십시오. stop-all.sh
2) 데이터 노드 내부의 모든 파일 삭제 rm -rf / usr / local / hadoop_store / hdfs / datanode / *
3) 그런 다음 명령을 사용하여 모든 서비스를 시작하십시오. 시작 --all.sh
jps 명령을 사용하여 모든 서비스가 실행 중인지 확인할 수 있습니다.
희망이 작동합니다!
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
'HADOOP' 카테고리의 다른 글
[HADOOP] jdbc와 kerberos keytab을 사용하여 하이브 메타 스토어에 액세스하기 (0) | 2019.05.31 |
---|---|
[HADOOP] 프라임 숫자 생성을위한 병렬 알고리즘 (아마도 하둡의 맵 축소를 사용) (0) | 2019.05.31 |
[HADOOP] Hadoop / HDFS 파일 분할 정보 (0) | 2019.05.31 |
[HADOOP] HDFS에서 "mapred.min.split.size"매개 변수의 동작 (0) | 2019.05.31 |
[HADOOP] 분할 크기 대 블록 크기 (하둡) (0) | 2019.05.31 |