복붙노트

[HADOOP] 데이터 노드가 시작되지 않았습니다.

HADOOP

데이터 노드가 시작되지 않았습니다.

다음 가이드를 사용하여 가상 분산 구성에서 Hadoop 버전 0.20.203.0을 설정하려고합니다.

http://www.javacodegeeks.com/2012/01/hadoop-modes-explained-standalone.html

start-all.sh 스크립트를 실행 한 후 "jps"를 실행합니다.

나는이 산출을 얻는다 :

4825 NameNode
5391 TaskTracker
5242 JobTracker
5477 Jps
5140 SecondaryNameNode

내가 사용하는 hdfs에 정보를 추가하려고 할 때 :

bin/hadoop fs -put conf input

오류가 있습니다.

hadoop@m1a2:~/software/hadoop$ bin/hadoop fs -put conf input
12/04/10 18:15:31 WARN hdfs.DFSClient: DataStreamer Exception: org.apache.hadoop.ipc.RemoteException: java.io.IOException: File /user/hadoop/input/core-site.xml could only be replicated to 0 nodes, instead of 1
        at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.getAdditionalBlock(FSNamesystem.java:1417)
        at org.apache.hadoop.hdfs.server.namenode.NameNode.addBlock(NameNode.java:596)
        at sun.reflect.GeneratedMethodAccessor6.invoke(Unknown Source)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:616)
        at org.apache.hadoop.ipc.RPC$Server.call(RPC.java:523)
        at org.apache.hadoop.ipc.Server$Handler$1.run(Server.java:1383)
        at org.apache.hadoop.ipc.Server$Handler$1.run(Server.java:1379)
        at java.security.AccessController.doPrivileged(Native Method)
        at javax.security.auth.Subject.doAs(Subject.java:416)
        at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1059)
        at org.apache.hadoop.ipc.Server$Handler.run(Server.java:1377)

        at org.apache.hadoop.ipc.Client.call(Client.java:1030)
        at org.apache.hadoop.ipc.RPC$Invoker.invoke(RPC.java:224)
        at $Proxy1.addBlock(Unknown Source)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:616)
        at org.apache.hadoop.io.retry.RetryInvocationHandler.invokeMethod(RetryInvocationHandler.java:82)
        at org.apache.hadoop.io.retry.RetryInvocationHandler.invoke(RetryInvocationHandler.java:59)
        at $Proxy1.addBlock(Unknown Source)
        at org.apache.hadoop.hdfs.DFSClient$DFSOutputStream.locateFollowingBlock(DFSClient.java:3104)
        at org.apache.hadoop.hdfs.DFSClient$DFSOutputStream.nextBlockOutputStream(DFSClient.java:2975)
        at org.apache.hadoop.hdfs.DFSClient$DFSOutputStream.access$2000(DFSClient.java:2255)
        at org.apache.hadoop.hdfs.DFSClient$DFSOutputStream$DataStreamer.run(DFSClient.java:2446)

12/04/10 18:15:31 WARN hdfs.DFSClient: Error Recovery for block null bad datanode[0] nodes == null
12/04/10 18:15:31 WARN hdfs.DFSClient: Could not get block locations. Source file "/user/hadoop/input/core-site.xml" - Aborting...
put: java.io.IOException: File /user/hadoop/input/core-site.xml could only be replicated to 0 nodes, instead of 1
12/04/10 18:15:31 ERROR hdfs.DFSClient: Exception closing file /user/hadoop/input/core-site.xml : org.apache.hadoop.ipc.RemoteException: java.io.IOException: File /user/hadoop/input/core-site.xml could only be replicated to 0 nodes, instead of 1
        at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.getAdditionalBlock(FSNamesystem.java:1417)
        at org.apache.hadoop.hdfs.server.namenode.NameNode.addBlock(NameNode.java:596)
        at sun.reflect.GeneratedMethodAccessor6.invoke(Unknown Source)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:616)
        at org.apache.hadoop.ipc.RPC$Server.call(RPC.java:523)
        at org.apache.hadoop.ipc.Server$Handler$1.run(Server.java:1383)
        at org.apache.hadoop.ipc.Server$Handler$1.run(Server.java:1379)
        at java.security.AccessController.doPrivileged(Native Method)
        at javax.security.auth.Subject.doAs(Subject.java:416)
        at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1059)
        at org.apache.hadoop.ipc.Server$Handler.run(Server.java:1377)

org.apache.hadoop.ipc.RemoteException: java.io.IOException: File /user/hadoop/input/core-site.xml could only be replicated to 0 nodes, instead of 1
        at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.getAdditionalBlock(FSNamesystem.java:1417)
        at org.apache.hadoop.hdfs.server.namenode.NameNode.addBlock(NameNode.java:596)
        at sun.reflect.GeneratedMethodAccessor6.invoke(Unknown Source)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:616)
        at org.apache.hadoop.ipc.RPC$Server.call(RPC.java:523)
        at org.apache.hadoop.ipc.Server$Handler$1.run(Server.java:1383)
        at org.apache.hadoop.ipc.Server$Handler$1.run(Server.java:1379)
        at java.security.AccessController.doPrivileged(Native Method)
        at javax.security.auth.Subject.doAs(Subject.java:416)
        at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1059)
        at org.apache.hadoop.ipc.Server$Handler.run(Server.java:1377)

        at org.apache.hadoop.ipc.Client.call(Client.java:1030)
        at org.apache.hadoop.ipc.RPC$Invoker.invoke(RPC.java:224)
        at $Proxy1.addBlock(Unknown Source)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:616)
        at org.apache.hadoop.io.retry.RetryInvocationHandler.invokeMethod(RetryInvocationHandler.java:82)
        at org.apache.hadoop.io.retry.RetryInvocationHandler.invoke(RetryInvocationHandler.java:59)
        at $Proxy1.addBlock(Unknown Source)
        at org.apache.hadoop.hdfs.DFSClient$DFSOutputStream.locateFollowingBlock(DFSClient.java:3104)
        at org.apache.hadoop.hdfs.DFSClient$DFSOutputStream.nextBlockOutputStream(DFSClient.java:2975)
        at org.apache.hadoop.hdfs.DFSClient$DFSOutputStream.access$2000(DFSClient.java:2255)
        at org.apache.hadoop.hdfs.DFSClient$DFSOutputStream$DataStreamer.run(DFSClient.java:2446)

나는 완전히 확신하지는 않지만 이것이 데이터 노드가 실행되고 있지 않다는 것과 관련이 있다고 생각합니다.

아무도 내가 잘못했거나이 문제를 해결하는 방법을 알고 있습니까?

편집 : 이것은 datanode.log 파일입니다 :

2012-04-11 12:27:28,977 INFO org.apache.hadoop.hdfs.server.datanode.DataNode: STARTUP_MSG:
/************************************************************
STARTUP_MSG: Starting DataNode
STARTUP_MSG:   host = m1a2/139.147.5.55
STARTUP_MSG:   args = []
STARTUP_MSG:   version = 0.20.203.0
STARTUP_MSG:   build = http://svn.apache.org/repos/asf/hadoop/common/branches/branch-0.20-security-203 -r 1099333; compiled by 'oom' on Wed May  4 07:57:50 PDT 2011
************************************************************/
2012-04-11 12:27:29,166 INFO org.apache.hadoop.metrics2.impl.MetricsConfig: loaded properties from hadoop-metrics2.properties
2012-04-11 12:27:29,181 INFO org.apache.hadoop.metrics2.impl.MetricsSourceAdapter: MBean for source MetricsSystem,sub=Stats registered.
2012-04-11 12:27:29,183 INFO org.apache.hadoop.metrics2.impl.MetricsSystemImpl: Scheduled snapshot period at 10 second(s).
2012-04-11 12:27:29,183 INFO org.apache.hadoop.metrics2.impl.MetricsSystemImpl: DataNode metrics system started
2012-04-11 12:27:29,342 INFO org.apache.hadoop.metrics2.impl.MetricsSourceAdapter: MBean for source ugi registered.
2012-04-11 12:27:29,347 WARN org.apache.hadoop.metrics2.impl.MetricsSystemImpl: Source name ugi already exists!
2012-04-11 12:27:29,615 ERROR org.apache.hadoop.hdfs.server.datanode.DataNode: java.io.IOException: Incompatible namespaceIDs in /tmp/hadoop-hadoop/dfs/data: namenode namespaceID = 301052954; datanode namespaceID = 229562149
        at org.apache.hadoop.hdfs.server.datanode.DataStorage.doTransition(DataStorage.java:232)
        at org.apache.hadoop.hdfs.server.datanode.DataStorage.recoverTransitionRead(DataStorage.java:147)
        at org.apache.hadoop.hdfs.server.datanode.DataNode.startDataNode(DataNode.java:354)
        at org.apache.hadoop.hdfs.server.datanode.DataNode.<init>(DataNode.java:268)
        at org.apache.hadoop.hdfs.server.datanode.DataNode.makeInstance(DataNode.java:1480)
        at org.apache.hadoop.hdfs.server.datanode.DataNode.instantiateDataNode(DataNode.java:1419)
        at org.apache.hadoop.hdfs.server.datanode.DataNode.createDataNode(DataNode.java:1437)
        at org.apache.hadoop.hdfs.server.datanode.DataNode.secureMain(DataNode.java:1563)
        at org.apache.hadoop.hdfs.server.datanode.DataNode.main(DataNode.java:1573)

2012-04-11 12:27:29,617 INFO org.apache.hadoop.hdfs.server.datanode.DataNode: SHUTDOWN_MSG:
/************************************************************
SHUTDOWN_MSG: Shutting down DataNode at m1a2/139.147.5.55
************************************************************/

해결법

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

    1.DN 로그에 나타나는 오류는 다음에서 설명합니다. http://www.michael-noll.com/tutorials/running-hadoop-on-ubuntu-linux-multi-node-cluster/#java-io-ioexception- 호환되지 않는 namespaceids

    DN 로그에 나타나는 오류는 다음에서 설명합니다. http://www.michael-noll.com/tutorials/running-hadoop-on-ubuntu-linux-multi-node-cluster/#java-io-ioexception- 호환되지 않는 namespaceids

    그 페이지에서 :

    현재로서는 아래에 설명 된 것과 같이 두 가지 해결 방법이있는 것으로 보입니다.

    해결 방법 1 : 처음부터 시작

    다음 단계에서이 오류를 해결할 수 있음을 증언 할 수 있지만 부작용으로 인해 행복하게되지는 않습니다 (나도 마찬가지입니다). 내가 발견 한 근본적인 해결 방법은 다음과 같습니다.

    모든 HDFS 데이터를 삭제하고 처음부터 시작하는 것이 좋은 생각처럼 들리지 않을 때 (초기 설정 / 테스트 중에는 괜찮을 수도 있음) 두 번째 방법을 시도해보십시오.

    해결 방법 2 : 문제가있는 DataNodes의 네임 스페이스 ID 업데이트

    다음 제안에 대해 Jared Stehler에게 큰 감사를드립니다. 아직 직접 테스트하지는 않았지만 시험해보고 의견을 보내주십시오. 이 문제 해결 방법은 문제가되는 DataNode에서 하나의 파일 만 편집하면되므로 "최소 침입"입니다.

    자습서의 지침을 따랐 으면 관련 파일의 전체 경로는 다음과 같습니다.

    VERSION의 내용이 어떻게 생겼는지 궁금하다면, 다음 중 하나입니다.

  2. ==============================

    2.좋아, 나는 이것을 한 번 더 게시 :

    좋아, 나는 이것을 한 번 더 게시 :

    누군가가 이것을 필요로하는 경우, 최신 버전의 Hadoop (기본적으로 2.4.0을 실행 중이다)

    파일에서 : hdfs-site.xml dfs.namenode.name.dir dfs.namenode.data.dir에 해당하는 디렉토리 경로를 찾습니다.

    희망이 도움이됩니다.

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

    3.hadoop1.1.2를 사용하여 pseudo node에서 같은 문제가 발생했습니다. 그래서 bin / stop-all.sh를 실행하여 클러스터를 중지했습니다. hdfs-site.xml에 내 hadoop tmp 디렉토리의 설정을 보았습니다.

    hadoop1.1.2를 사용하여 pseudo node에서 같은 문제가 발생했습니다. 그래서 bin / stop-all.sh를 실행하여 클러스터를 중지했습니다. hdfs-site.xml에 내 hadoop tmp 디렉토리의 설정을 보았습니다.

    <name>hadoop.tmp.dir</name>
    <value>/root/data/hdfstmp</value>
    

    그래서 나는 / root / data / hdfstmp에 들어가서 명령을 사용하여 모든 파일을 삭제했다.

    rm -rf *
    

    namenode를 다시 포맷하십시오.

    bin/hadoop namenode -format
    

    다음을 사용하여 클러스터를 시작하십시오.

    bin/start-all.sh
    

    주된 이유는 bin / hadoop입니다. namenode -format은 이전 데이터를 제거하지 않았습니다. 따라서 수동으로 삭제해야합니다.

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

    4.다음 단계를 수행하십시오.

    다음 단계를 수행하십시오.

    1. bin/stop-all.sh
    2. remove dfs/ and mapred/ folder of hadoop.tmp.dir in core-site.xml
    3. bin/hadoop namenode -format
    4. bin/start-all.sh
    5. jps
    
  5. ==============================

    5.데이터 노드의 형식을 지정하고 다시 시작하십시오.

    데이터 노드의 형식을 지정하고 다시 시작하십시오.

  6. ==============================

    6.나는 hadoop의 나의 버전으로 CDH4를 사용하고 있으며 그것을 설정하는데 문제가있다. 제 namode를 다시 포맷하려고 시도한 후에도 여전히 오류가 발생했습니다.

    나는 hadoop의 나의 버전으로 CDH4를 사용하고 있으며 그것을 설정하는데 문제가있다. 제 namode를 다시 포맷하려고 시도한 후에도 여전히 오류가 발생했습니다.

    내 VERSION 파일의 위치

    /var/lib/hadoop-hdfs/cache/{username}/dfs/data/current/VERSION
    

    hadoop.tmp.dir 속성을 찾아서 HDFS 캐시 디렉토리의 위치를 ​​찾을 수 있습니다 :

    more /etc/hadoop/conf/hdfs-site.xml 
    

    나는 그것을함으로써 발견했다.

    cd /var/lib/hadoop-hdfs/cache/
    rm -rf *
    

    마침내 namenode를 다시 포맷하여 마침내 문제를 해결할 수있었습니다. 폭탄 처리에 필요한 폴더를 파악할 수 있도록 도와 준 첫 번째 회신에 감사드립니다.

  7. ==============================

    7.나는 Chris Shain 대답에서 Jared Stehler가 제안한 접근법 2를 시도했으며 이러한 변경을 수행 한 후에 위에서 언급 한 문제를 해결할 수 있음을 확인할 수있었습니다.

    나는 Chris Shain 대답에서 Jared Stehler가 제안한 접근법 2를 시도했으며 이러한 변경을 수행 한 후에 위에서 언급 한 문제를 해결할 수 있음을 확인할 수있었습니다.

    이름과 데이터 버전 파일에 동일한 버전 번호를 사용했습니다. (/ app / hadoop / tmp / dfs / name / current) 내부의 VERSION 파일 (/ app / hadoop / tmp / dfs / data / current)의 버전 번호를 복사 한 것입니다.

    건배!

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

    8.수정되지 않은 cloudera quickstart vm 4.4.0-1을 사용할 때이 문제가 발생했습니다.

    수정되지 않은 cloudera quickstart vm 4.4.0-1을 사용할 때이 문제가 발생했습니다.

    참고로 Cloudera 관리자는 DataStreamer stacktrace의 오류 메시지에서 datanode가 실행 중이 아니라고하더라도 내 datanode의 상태가 양호하다고 말했습니다.

    크레딧은 https://stackoverflow.com/a/10110369/249538에서 해결 방법 # 2로 이동하지만 cloudera quickstart VM을 사용하여 구체적인 경험을 자세히 설명하겠습니다.

    특히, 나는했다 : 이 순서대로 서비스 hue1, hive1, mapreduce1, hdfs1을 중지하십시오. cloudera 관리자를 통해 http : //localhost.localdomain : 7180 / cmf / services / status

    다음을 통해 내 VERSION 파일을 찾았습니다 : sudo find / -name VERSION

    나는있다 :

    /dfs/dn/current/BP-780931682-127.0.0.1-1381159027878/current/VERSION
    /dfs/dn/current/VERSION
    /dfs/nn/current/VERSION
    /dfs/snn/current/VERSION
    

    내가 그 파일의 내용을 확인했지만, 그들은 모두 하나의 파일을 제외하고 완전히 일치하는 namespaceID를 가지고있었습니다. 그래서 그것에 항목을 추가했습니다.

    그런 다음 cloudera 관리자를 통해 역순으로 서비스를 다시 시작했습니다. 지금 나는 hdfs에 물건을 넣을 수있다.

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

    9.필자의 경우, dfs.name.dir 및 dfs.data.dir에 대해 하나의 대상을 잘못 설정했습니다. 올바른 형식은 다음과 같습니다.

    필자의 경우, dfs.name.dir 및 dfs.data.dir에 대해 하나의 대상을 잘못 설정했습니다. 올바른 형식은 다음과 같습니다.

     <property>
     <name>dfs.name.dir</name>
     <value>/path/to/name</value>
     </property>
    
     <property>
     <name>dfs.data.dir</name>
     <value>/path/to/data</value>
     </property>
    
  10. ==============================

    10.나는 데이터 누락과 같은 문제가있다. 나는 나를 위해 일한이 단계를 따른다.

    나는 데이터 누락과 같은 문제가있다. 나는 나를 위해 일한이 단계를 따른다.

    1. datanode가있는 폴더를 찾습니다. cd hadoop / hadoopdata / hdfs 2. 폴더에서 보면 hdfs에 어떤 파일이 있는지 볼 수 있습니다. ls 3. 데이터 노드의 이전 버전이기 때문에 데이터 노드 폴더를 삭제하십시오. rm -rf / datanode / * 4. 이전 명령을 실행 한 후 새 버전을 얻습니다. 5. 새로운 datanode를 시작하십시오. hadoop-daemon.sh가 데이터 노드를 시작합니다. 6. 웹 서비스를 새로 고칩니다. 잃어버린 노드가 나타납니다. 내 터미널

  11. from https://stackoverflow.com/questions/10097246/no-data-nodes-are-started by cc-by-sa and MIT license