복붙노트

[HADOOP] 그러나 그들은 의사 모드에서 오류를 고안한다.

HADOOP

그러나 그들은 의사 모드에서 오류를 고안한다.

나는 새로운 것을했고, 단계를 배우고있다. Hadoop Definitve 가이드에 따르면 가상 배포 모드에서 내 hadoop을 설정하고 모든 것이 잘 작동하고 있습니다. 어제 3 장의 모든 예를 실행할 수있었습니다. 오늘 유닉스를 재부팅하고 start-dfs.sh를 실행하려고 시도한 다음 localhost : 50070을 시도했을 때 ... 오류를 표시하고 dfs (stop-dfs.sh)를 중지하려고 시도 할 때 멈출 namenode가 없다고 말합니다. 나는이 문제에 대해 봤지만 아무런 결과도 얻지 못했다. 또한, 내 namenode 다시 포맷 할 때 ... 모든 것은 잘 작동하기 시작하고 localhost : 50070에 연결할 수 있고 hdfs의 파일과 디렉터리를 복제 할 수도 있지만 리눅스를 다시 시작하고 hdfs에 연결하려고하면 같은 문제가 발생합니다.

아래는 오류 로그입니다.

************************************************************/
2011-06-22 15:45:55,249 INFO org.apache.hadoop.hdfs.server.namenode.NameNode: STARTUP_MSG:
/************************************************************
STARTUP_MSG: Starting NameNode
STARTUP_MSG:   host = ubuntu/127.0.1.1
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
************************************************************/
2011-06-22 15:45:56,383 INFO org.apache.hadoop.metrics2.impl.MetricsConfig: loaded properties from hadoop-metrics2.properties
2011-06-22 15:45:56,455 INFO org.apache.hadoop.metrics2.impl.MetricsSourceAdapter: MBean for source MetricsSystem,sub=Stats registered.
2011-06-22 15:45:56,494 INFO org.apache.hadoop.metrics2.impl.MetricsSystemImpl: Scheduled snapshot period at 10 second(s).
2011-06-22 15:45:56,494 INFO org.apache.hadoop.metrics2.impl.MetricsSystemImpl: NameNode metrics system started
2011-06-22 15:45:57,007 INFO org.apache.hadoop.metrics2.impl.MetricsSourceAdapter: MBean for source ugi registered.
2011-06-22 15:45:57,031 WARN org.apache.hadoop.metrics2.impl.MetricsSystemImpl: Source name ugi already exists!
2011-06-22 15:45:57,059 INFO org.apache.hadoop.metrics2.impl.MetricsSourceAdapter: MBean for source jvm registered.
2011-06-22 15:45:57,070 INFO org.apache.hadoop.metrics2.impl.MetricsSourceAdapter: MBean for source NameNode registered.
2011-06-22 15:45:57,374 INFO org.apache.hadoop.hdfs.util.GSet: VM type       = 32-bit
2011-06-22 15:45:57,374 INFO org.apache.hadoop.hdfs.util.GSet: 2% max memory = 19.33375 MB
2011-06-22 15:45:57,374 INFO org.apache.hadoop.hdfs.util.GSet: capacity      = 2^22 = 4194304 entries
2011-06-22 15:45:57,374 INFO org.apache.hadoop.hdfs.util.GSet: recommended=4194304, actual=4194304
2011-06-22 15:45:57,854 INFO org.apache.hadoop.hdfs.server.namenode.FSNamesystem: fsOwner=anshu
2011-06-22 15:45:57,854 INFO org.apache.hadoop.hdfs.server.namenode.FSNamesystem: supergroup=supergroup
2011-06-22 15:45:57,854 INFO org.apache.hadoop.hdfs.server.namenode.FSNamesystem: isPermissionEnabled=true
2011-06-22 15:45:57,868 INFO org.apache.hadoop.hdfs.server.namenode.FSNamesystem: dfs.block.invalidate.limit=100
2011-06-22 15:45:57,869 INFO org.apache.hadoop.hdfs.server.namenode.FSNamesystem: isAccessTokenEnabled=false accessKeyUpdateInterval=0 min(s), accessTokenLifetime=0 min(s)
2011-06-22 15:45:58,769 INFO org.apache.hadoop.hdfs.server.namenode.FSNamesystem: Registered FSNamesystemStateMBean and NameNodeMXBean
2011-06-22 15:45:58,809 INFO org.apache.hadoop.hdfs.server.namenode.NameNode: Caching file names occuring more than 10 times
**2011-06-22 15:45:58,825 INFO org.apache.hadoop.hdfs.server.common.Storage: Storage directory /tmp/hadoop-anshu/dfs/name does not exist.
2011-06-22 15:45:58,827 ERROR org.apache.hadoop.hdfs.server.namenode.FSNamesystem: FSNamesystem initialization failed.
org.apache.hadoop.hdfs.server.common.InconsistentFSStateException: Directory /tmp/hadoop-anshu/dfs/name is in an inconsistent state: storage directory does not exist or is not accessible.
    at org.apache.h**adoop.hdfs.server.namenode.FSImage.recoverTransitionRead(FSImage.java:291)
    at org.apache.hadoop.hdfs.server.namenode.FSDirectory.loadFSImage(FSDirectory.java:97)
    at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.initialize(FSNamesystem.java:379)
    at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.<init>(FSNamesystem.java:353)
    at org.apache.hadoop.hdfs.server.namenode.NameNode.initialize(NameNode.java:254)
    at org.apache.hadoop.hdfs.server.namenode.NameNode.<init>(NameNode.java:434)
    at org.apache.hadoop.hdfs.server.namenode.NameNode.createNameNode(NameNode.java:1153)
    at org.apache.hadoop.hdfs.server.namenode.NameNode.main(NameNode.java:1162)
2011-06-22 15:45:58,828 ERROR org.apache.hadoop.hdfs.server.namenode.NameNode: org.apache.hadoop.hdfs.server.common.InconsistentFSStateException: Directory /tmp/hadoop-anshu/dfs/name is in an inconsistent state: storage directory does not exist or is not accessible.
    at org.apache.hadoop.hdfs.server.namenode.FSImage.recoverTransitionRead(FSImage.java:291)
    at org.apache.hadoop.hdfs.server.namenode.FSDirectory.loadFSImage(FSDirectory.java:97)
    at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.initialize(FSNamesystem.java:379)
    at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.<init>(FSNamesystem.java:353)
    at org.apache.hadoop.hdfs.server.namenode.NameNode.initialize(NameNode.java:254)
    at org.apache.hadoop.hdfs.server.namenode.NameNode.<init>(NameNode.java:434)
    at org.apache.hadoop.hdfs.server.namenode.NameNode.createNameNode(NameNode.java:1153)
    at org.apache.hadoop.hdfs.server.namenode.NameNode.main(NameNode.java:1162)

2011-06-22 15:45:58,829 INFO org.apache.hadoop.hdfs.server.namenode.NameNode: SHUTDOWN_MSG:
/************************************************************
SHUTDOWN_MSG: Shutting down NameNode at ubuntu/127.0.1.1
************************************************************/

어떤 도움을 주시면 감사하겠습니다. 고맙습니다

해결법

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

    1.여기 키커가 있습니다 :

    여기 키커가 있습니다 :

    나는 비슷한 문제를 겪고 있었다. 나는 stop-all.sh를 사용하여 hadoop을 종료했다. 나는 내 HDFS에서 데이터를 제대로 저장할 것이라고 생각하는 것이 나에게는 어리석은 일이었습니다.

    하지만 hadoop-daemon.sh 스크립트에 적절한 코드 덩어리로 보이는 것이 무엇인지 알 수있는 한, 이것은 사실이 아닙니다. 단지 프로세스를 죽입니다.

    (stop)
    
        if [ -f $pid ]; then
          if kill -0 `cat $pid` > /dev/null 2>&1; then
            echo stopping $command
            kill `cat $pid`
          else
            echo no $command to stop
          fi
        else
          echo no $command to stop
        fi
    

    그것이 불평하는 디렉토리가 존재했는지 확인 했습니까? 나는 체크하고 광산을 사용하지 않았다. 비록 거기에 (텅 빈!) 데이터 폴더가 있었지만 여기에 나는 데이터가 한때 살았을지도 모른다고 상상한다.

    그래서 우리가해야 할 일은 우리의 namenode와 datanode가 tmp 디렉토리에 저장되지 않도록 Hadoop을 설정하는 것입니다. 운영 체제가 유지 관리를 수행하고 이러한 파일을 제거 할 가능성이 있습니다. 만약 당신이 그렇게했다면 tmp 디렉토리에 남겨 두지 않았을 것이고 map-reduce 작업의 중간에 당신의 머신을 재시작하지 않을 것이기 때문에 당신은 그것들에 대해 더 이상 신경 쓰지 않아도된다. 나는 이것이 정말로 일어나지 않을 것이라고 생각하지 않는다. (나는 그것이 내가 물건을 디자인 할 방법이 아니라는 뜻이다.) 그러나 이것은 좋은 추측과 같았다.

    따라서이 사이트 http://wiki.datameer.com/display/DAS11/Hadoop+configuration+file+templates를 기반으로 conf / hdfs-site.xml 파일을 편집하여 다음 경로를 가리 킵니다 (분명히 자신 만의 디렉토리를 만들 것).

    <property>
      <name>dfs.name.dir</name>
      <value>/hadoopstorage/name/</value>
    </property>
    
    <property>
      <name>dfs.data.dir</name>
      <value>/hadoopstorage/data/</value>
    </property>
    

    이것은 새로운 namenode (슬프게도, 데이터 손실이 불가피한 것처럼 보입니다.)를 포맷하고 쉘 스크립트로 hadoop을 시작하고 컴퓨터를 재시작 한 후 내 파일은 여전히 ​​존재합니다 ...

    YMMV ... 희망이 당신을 위해 일합니다! 나는 OS X에 있지만 나는 당신이 다른 결과를 가져야한다고 생각하지 않는다.

    일본

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

    2.데이터를 잃어 버리지 않으려면 다음 명령을 실행하십시오.

    데이터를 잃어 버리지 않으려면 다음 명령을 실행하십시오.

    ./hadoop namenode -format
    
  3. ==============================

    3.비슷한 문제가있어 도움이되었습니다.

    비슷한 문제가있어 도움이되었습니다.

    chown -R hdfs:hadoop /path/to/namenode/date/dir
    
  4. ==============================

    4.conf / hdfs-site.xml 파일에서이 속성을 설정하면 저에게 효과적입니다 !!!

    conf / hdfs-site.xml 파일에서이 속성을 설정하면 저에게 효과적입니다 !!!

    감사합니다 jsh

    <property>
      <name>dfs.name.dir</name>
      <value>/hadoopstorage/name/</value>
    </property>
    
    <property>
      <name>dfs.data.dir</name>
      <value>/hadoopstorage/data/</value>`enter code here`
    </property>
    

    디렉토리에 대한 적절한 권한을 설정하는 것을 잊지 마라.

  5. ==============================

    5.JSH 대답은 정확합니다.

    JSH 대답은 정확합니다.

    hadoop 2.6에 대한 몇 가지 변경 사항은 다음과 같습니다.

    <property>
      <name>dfs.namenode.name.dir</name>
      <value>/hadoopstorage/name/</value>
    </property>
    
    <property>
      <name>dfs.datanode.data.dir</name>
      <value>/hadoopstorage/data/</value>
    </property>
    
  6. ==============================

    6.문제를 해결하지 못했다면 다음을 시도하십시오. dfs.name.dir 디렉토리를 사용자 그룹 hadoop에 지정하고 그룹에게 쓰기 권한을 부여하십시오.

    문제를 해결하지 못했다면 다음을 시도하십시오. dfs.name.dir 디렉토리를 사용자 그룹 hadoop에 지정하고 그룹에게 쓰기 권한을 부여하십시오.

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

    7.hadoop 구성 디렉토리의 coresite.xml을 참조하십시오.

    hadoop 구성 디렉토리의 coresite.xml을 참조하십시오.

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

    8.나는 비슷한 문제가 있지만 약간 다르다.

    나는 비슷한 문제가 있지만 약간 다르다.

    start-all.sh 솔기를 아주 잘 실행하고 있지만 jps는 namenodes가 없다는 것을 보여 주며 hdfs dfs -ls /를 실행할 때 목록을 볼 수 없었습니다.

    내 첫번째 시도는 hadoop namenode -format을 실행하면 namenode가 나타나지만 datanode가 사라집니다.

    해결책을 찾은 후, 나는 rm -rf / usr / local / hadoop_store / hdfs / datanode / *를 실행하고 hadoop을 재시작하고, jps shows :

        12912 ResourceManager  
        13391 FsShell  
        13420 Jps  
        13038 NodeManager  
        12733 SecondaryNameNode  
        12432 NameNode  
        12556 DataNode  
    

    이제 평소처럼 hadoop 명령을 사용할 수 있습니다.

    HTH!

  9. from https://stackoverflow.com/questions/6447885/no-namenode-error-in-pseudo-mode by cc-by-sa and MIT license