[ERROR] Hadoop Datanode 실행 안됨Initialization failed for Block pool <registering> 0. Exiting

Denver·2022년 11월 20일
0

ERROR

목록 보기
2/6
post-thumbnail

실행 환경

OS : Redhat8
Hadoop Version : 3.3.4


ERROR

start-dfs.sh를 실행하면 Namenode 만 실행되고 Datanode는 올라오지 않는다.



로그

로그는 <HADOOP_HOME>/logs/hadoop-xxxx-datanode-xxxxx.internal.log를 확인하면 된다.

tail -100 <HADOOP_HOME>/logs/hadoop-ec2-user-datanode-ip-10-0-0-188.ap-northeast-2.compute.internal.log
2022-11-20 07:36:33,880 ERROR org.apache.hadoop.hdfs.server.datanode.DataNode: Initialization failed for Block pool <registering> (Datanode Uuid 2177b52c-9923-4d6b-9c08-301b37833c62) service to localhost/127.0.0.1:9000. Exiting.
java.io.IOException: All specified directories have failed to load.
	at org.apache.hadoop.hdfs.server.datanode.DataStorage.recoverTransitionRead(DataStorage.java:560)
	at org.apache.hadoop.hdfs.server.datanode.DataNode.initStorage(DataNode.java:1753)
	at org.apache.hadoop.hdfs.server.datanode.DataNode.initBlockPool(DataNode.java:1689)
	at org.apache.hadoop.hdfs.server.datanode.BPOfferService.verifyAndSetNamespaceInfo(BPOfferService.java:392)
	at org.apache.hadoop.hdfs.server.datanode.BPServiceActor.connectToNNAndHandshake(BPServiceActor.java:288)
	at org.apache.hadoop.hdfs.server.datanode.BPServiceActor.run(BPServiceActor.java:830)
	at java.lang.Thread.run(Thread.java:750)
2022-11-20 07:36:33,880 WARN org.apache.hadoop.hdfs.server.datanode.DataNode: Ending block pool service for: Block pool <registering> (Datanode Uuid 2177b52c-9923-4d6b-9c08-301b37833c62) service to localhost/127.0.0.1:9000

원인

최초 설치가 아니고 사용중에 namenode를 포맷하면서 namenode; location=null? 을 물어볼 때 Y를 선택해서 오류가 난 것이다.

사용중에 namenode를 포맷해야한다면
hdfs/datanode, hdfs/namenode 디렉토리를 삭제, 재생성 후 namenode -format을 해야한다.

Re-format filesystem in Storage Directory root= /home/ec2-user/project/sw/hadoop_store/hdfs/namenode; location= null ? (Y or N)

해결 방법

방법 1) clusterID 변경

cat <HADOOP_STORE>/hdfs/namenode/current/VERSION
cat <HADOOP_STORE>/hdfs/datanode/current/VERSION

datanode와 namenode에 clusterID가 서로 다르다.
먼저 프로세스를 죽이고,
namenode의 clusterID를 datanode에 복붙하고 start-dfs.sh를 실행하면 정상적으로 올라온다.

방법 2) hdfs/datanode, hdfs/namenode 디렉토리 재생성

hdfs/datanode, hdfs/namenode 디렉토리를 지우고 다시 생성한다.

rm -rf hdfs/namenode
rm -rf hdfs/datanode
mkdir hdfs/namenode
mkdir hdfs/datanode

star-dfs.sh
profile
까먹었을 미래의 나를 위해

0개의 댓글