[HADOOP] 왜 Hadoop과 호환되지 않는 네임 스페이스 ID 문제가 발생합니까?
HADOOP왜 Hadoop과 호환되지 않는 네임 스페이스 ID 문제가 발생합니까?
이것은 상당히 잘 문서화 된 오류이며 수정이 쉽지만 Hadoop 데이터 노드 NamespaceID가 너무 쉽게 망가질 수있는 이유 또는 Hadoop이 데이터 노드를 시작할 때 NamespaceID를 할당하는 방법을 아는 사람이 있습니까?
여기에 오류가 있습니다.
2010-08-06 12:12:06,900 ERROR org.apache.hadoop.hdfs.server.datanode.DataNode: java.io.IOException: Incompatible namespaceIDs in /Users/jchen/Data/Hadoop/dfs/data: namenode namespaceID = 773619367; datanode namespaceID = 2049079249
at org.apache.hadoop.hdfs.server.datanode.DataStorage.doTransition(DataStorage.java:233)
at org.apache.hadoop.hdfs.server.datanode.DataStorage.recoverTransitionRead(DataStorage.java:148)
at org.apache.hadoop.hdfs.server.datanode.DataNode.startDataNode(DataNode.java:298)
at org.apache.hadoop.hdfs.server.datanode.DataNode.<init>(DataNode.java:216)
at org.apache.hadoop.hdfs.server.datanode.DataNode.makeInstance(DataNode.java:1283)
at org.apache.hadoop.hdfs.server.datanode.DataNode.instantiateDataNode(DataNode.java:1238)
at org.apache.hadoop.hdfs.server.datanode.DataNode.createDataNode(DataNode.java:1246)
at org.apache.hadoop.hdfs.server.datanode.DataNode.main(DataNode.java:1368)
이것은 단일 노드 인스턴스에서도 발생하는 것으로 보입니다.
해결법
-
==============================
1.네임 노드는 HDFS를 포맷 할 때마다 새로운 네임 스페이스 ID를 생성합니다. 나는 이것이 현재 버전과 이전 버전을 구분할 가능성이 있다고 생각합니다. namespaceID가 모든 형식화 된 인스턴스에 대해 고유하지 않은 경우 불가능할 수도있는 무언가가 올바르지 않으면 이전 버전으로 항상 롤백 할 수 있습니다.
네임 노드는 HDFS를 포맷 할 때마다 새로운 네임 스페이스 ID를 생성합니다. 나는 이것이 현재 버전과 이전 버전을 구분할 가능성이 있다고 생각합니다. namespaceID가 모든 형식화 된 인스턴스에 대해 고유하지 않은 경우 불가능할 수도있는 무언가가 올바르지 않으면 이전 버전으로 항상 롤백 할 수 있습니다.
NamespaceID는 namenode와 datanode를 연결합니다. 데이터 노드는 namespaceID를 통해 namenode에 바인딩됩니다.
-
==============================
2.이 문제는 잘 설명되어 있으며 다음의 훌륭한 가이드에서 도움이되었습니다.
이 문제는 잘 설명되어 있으며 다음의 훌륭한 가이드에서 도움이되었습니다.
-
==============================
3.나는 이것도 얻고 있었고, core-site.xml 대신에 hdfs-site.xml에 내 구성을 넣으려고했다.
나는 이것도 얻고 있었고, core-site.xml 대신에 hdfs-site.xml에 내 구성을 넣으려고했다.
그 오류없이 지금 멈추고 시작하는 것 같습니다.
[편집, 2010-08-13]
실제로 이것은 여전히 일어나고 있으며 서식으로 인해 발생합니다.
포맷을 할 때 VERSION 파일을 보면 namenode에 새로운 namespaceID가 할당되지만 데이터 노드에는 할당되지 않는다는 것을 알 수 있습니다.
빠른 해결책은 형식 이전에 데이터 노드의 VERSION을 삭제하는 것입니다.
[TIDE, 2010-08-13]
-
==============================
4.HDFS를 포맷 할 때도이 오류가 발생했습니다. 시작하지 않은 datanode 외에도 jobtracker도 시작되지 않습니다. 데이터 노드의 경우 수동으로 namespaceid를 변경했습니다. jobtracker의 경우 / mapred / system (hdfs 사용자로서) 디렉토리를 생성하고 소유자를 mapred로 변경해야합니다. 구직자는 포맷 이후에 실행을 시작해야합니다.
HDFS를 포맷 할 때도이 오류가 발생했습니다. 시작하지 않은 datanode 외에도 jobtracker도 시작되지 않습니다. 데이터 노드의 경우 수동으로 namespaceid를 변경했습니다. jobtracker의 경우 / mapred / system (hdfs 사용자로서) 디렉토리를 생성하고 소유자를 mapred로 변경해야합니다. 구직자는 포맷 이후에 실행을 시작해야합니다.
-
==============================
5.다음 오류가 발생했습니다 : "/ home / hadoop / data / dn에 호환되지 않는 namespaceID가 있습니다",
다음 오류가 발생했습니다 : "/ home / hadoop / data / dn에 호환되지 않는 namespaceID가 있습니다",
나는 클러스터에 네 개의 데이터 노드를 가지고 있는데, 시작 --dfs.sh를 시작한 후에 하나의 datanode 만 사용되었다. 그래서 해결책은 nn과 jt에서 서비스를 중지하고 모든 datanode에서 dn 구성 dhm hdfs-site를 제거하고 dn 파일 (/ home / hadoop / data / dn)을 입력하고 namenode를 포맷하십시오. 그런 다음 hdfs-site에 datanode 속성을 모든 데이터 노드에 추가하고 namenode를 한 번만 포맷하십시오. 이제 모든 데이터 노드가 확실하게 서비스를 시작하십시오.
from https://stackoverflow.com/questions/3425688/why-does-the-hadoop-incompatible-namespaceids-issue-happen by cc-by-sa and MIT license
'HADOOP' 카테고리의 다른 글
[HADOOP] 원 사는 yarn.nodemanager.resource.cpu-vcores를 존중하지 않습니다. (0) | 2019.06.03 |
---|---|
[HADOOP] Hadoop 클라이언트 노드 설정 (0) | 2019.06.03 |
[HADOOP] Java에서 HDFS 및 로컬 파일 읽기 (0) | 2019.06.03 |
[HADOOP] 원격 호스트에서 Java API, 사용자 인증을 통한 HDFS 액세스 (0) | 2019.06.03 |
[HADOOP] job.setOutputKeyClass 및 job.setOutputReduceClass는 어디에 사용됩니까? (0) | 2019.06.03 |