hadoop 이상: 지금까지 해결된 가장 까다로운 이상 (java.io.IOException: Incompatible clusterIDs)
3298 단어 exception
예외:
9 (storage id DS-2102177634-172.16.102.203-50010-1384415799536) service to cluster1/172.16.102.201:9000
java.io.IOException: Incompatible clusterIDs in /home/grid/hadoop-2.2.0-src/hadoop-dist/target/hadoop-2.2.0/yarn_data/dfs/data: namenode clusterID = CID-c833e211-a141-41c9-b0b4-5fbfcffeb5bf; datanode clusterID = CID-0048bbc6-49f8-44dc-bd65-00dbd35e70b7
at org.apache.hadoop.hdfs.server.datanode.DataStorage.doTransition(DataStorage.java:391)
at org.apache.hadoop.hdfs.server.datanode.DataStorage.recoverTransitionRead(DataStorage.java:191)
at org.apache.hadoop.hdfs.server.datanode.DataStorage.recoverTransitionRead(DataStorage.java:219)
at org.apache.hadoop.hdfs.server.datanode.DataNode.initStorage(DataNode.java:837)
at org.apache.hadoop.hdfs.server.datanode.DataNode.initBlockPool(DataNode.java:808)
at org.apache.hadoop.hdfs.server.datanode.BPOfferService.verifyAndSetNamespaceInfo(BPOfferService.java:280)
at org.apache.hadoop.hdfs.server.datanode.BPServiceActor.connectToNNAndHandshake(BPServiceActor.java:222)
at org.apache.hadoop.hdfs.server.datanode.BPServiceActor.run(BPServiceActor.java:664)
at java.lang.Thread.run(Thread.java:744
오류 원인:
hadoop의 업그레이드 기능은 Data-node가 버전 파일에 영구적인clusterID를 저장해야 합니다. Datanode가 시작될 때namenode의 버전 파일에 있는clusterID를 검사하고 일치시켜야 합니다. 만약 둘이 일치하지 않으면 "Incompatible clusterIDs"의 이상이 발생합니다.
namenode를 포맷할 때마다 새로운 cluster ID를 이길 수 있습니다. namenode만 포맷하고 이datanode를 포맷하지 않으면'java'가 나타납니다.io.IOException: Incompatible namespaceIDs "이상적입니다.
공식 CCR 참조[HDFS-107]
해결 방법:
이 이상은 공식 CCRs에서 찾을 수 있습니다: HDFS-107(formerly known asHADOOP-1212
solution1 Start from scratch
1. stop the full cluster
2. 문제가 발생한 datanode의 ${dfs.namenode.data.dir}/tmp/hadoop-${user}를 삭제합니다. 이 변수는 $HADOOP_CONF_DIR/아래의 hdfs-site.xml에 정의되어 있습니다.
3. namenode를 다시 포맷하면 hdfs에 있는 모든 데이터가 삭제됩니다!
4. restart the cluster
solution2 clusterID 수동 업데이트(기존 버전은namespaceID (MRV1) 업데이트)
1.namenode에서 ${
dfs.namenode.name.dir
}/current/VERSION에서 clusterID (${dfs.namenode.name.dir
} 를 hdfs-site에서 찾습니다.xml에서 정의, 아래 동일)2. 문제가 발생한 datanode에서 ${
dfs.namenode.data.dir
}/current/VERSION에서 clusterID를 찾아 1단계에서 얻은 clusterID로 덮어씁니다.3. 문제 노드에서 datanode를 다시 시작합니다.
평주: 이 방법은 dfs를 포맷하지 않고 첫 번째 방법으로 한다. 그러고 보면 뇌장애만 솔루션1을 사용할 수 있다. 그리고 나는 대륙 사람들이 쓴 블로그를 많이 봤는데 하필이solution1로 이 문제를 해결하는 것을 선택했다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Exception Class에서 에러 코드 해석 ~초기초편~직장에서 C# 프로젝트가 내뿜는 오류 코드를 구문 분석하고 오류의 위치를 확인하기 위해 Exception class를 활용할 수 있었습니다. 지금까지 Exception Class 에 대해서 별로 파악할 수 없었기 때...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.