2012-01-07 3 views
1

우분투 VM에서 가상 분산 모드로 hadoop을 실행 중입니다. 최근에 내 VM에서 사용할 수있는 RAM의 수와 코어 수를 늘리기로 결정했는데, 이는 완전히 hdfs가 망가져있는 것처럼 보입니다. 첫째, 안전 모드에 있었고, 나는 수동으로 사용하는 것을 발표 :오류 namenode.FSNamesystem : FSNamesystem initialization failed

하둡 dfsadmin하는 그런

을 떠나 내가 달릴 -safemode :

하둡 fsck를

-blocks 및 거의 모든 블록이 손상되거나 누락했다 . 그래서 나는 이것이 나의 학습을위한 것이라고 생각했다. "/ user/msknapp"의 모든 내용과 "/var/lib/hadoop-0.20/cache/mapred/mapred/.settings"의 모든 것을 삭제했다. 그래서 블록 오류가 사라졌습니다. 그럼 난 시도 :

하둡 FS 저것 집어 넣어 myfile을 myfile을

및 (요약 된) 얻을 :

12/01/07 15:05:29 WARN hdfs.DFSClient: DataStreamer Exception: org.apache.hadoop.ipc.RemoteException: java.io.IOException: File /user/msknapp/myfile could only be replicated to 0 nodes, instead of 1 
    at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.getAdditionalBlock(FSNamesystem.java:1490) 
    at org.apache.hadoop.hdfs.server.namenode.NameNode.addBlock(NameNode.java:653) 
    at sun.reflect.GeneratedMethodAccessor8.invoke(Unknown Source) 
12/01/07 15:05:29 WARN hdfs.DFSClient: Error Recovery for block null bad datanode[0] nodes == null 
12/01/07 15:05:29 WARN hdfs.DFSClient: Could not get block locations. Source file "/user/msknapp/myfile" - Aborting... 
put: java.io.IOException: File /user/msknapp/myfile could only be replicated to 0 nodes, instead of 1 
12/01/07 15:05:29 ERROR hdfs.DFSClient: Exception closing file /user/msknapp/myfile : org.apache.hadoop.ipc.RemoteException: java.io.IOException: File /user/msknapp/myfile could only be replicated to 0 nodes, instead of 1 
    at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.getAdditionalBlock(FSNamesystem.java:1490) 
    at org.apache.hadoop.hdfs.server.namenode.NameNode.addBlock(NameNode.java:653) 
    at ... 

org.apache.hadoop.ipc.RemoteException: java.io.IOException: File /user/msknapp/myfile could only be replicated to 0 nodes, instead of 1 
    at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.getAdditionalBlock(FSNamesystem.java:1490) 
    at org.apache.hadoop.hdfs.server.namenode.NameNode.addBlock(NameNode.java:653) 
    at ... 

그래서 나는 중지하고 네임 노드와 데이터 노드를 다시 시작했습니다. 운이 없다 :

12/01/07 15:13:47 ERROR namenode.FSNamesystem: FSNamesystem initialization failed. 
java.io.FileNotFoundException: /var/lib/hadoop-0.20/cache/hadoop/dfs/name/image/fsimage (Permission denied) 
    at java.io.RandomAccessFile.open(Native Method) 
    at java.io.RandomAccessFile.<init>(RandomAccessFile.java:233) 
    at org.apache.hadoop.hdfs.server.namenode.FSImage.isConversionNeeded(FSImage.java:683) 
    at org.apache.hadoop.hdfs.server.common.Storage.checkConversionNeeded(Storage.java:690) 
    at org.apache.hadoop.hdfs.server.common.Storage.access$000(Storage.java:60) 
    at org.apache.hadoop.hdfs.server.common.Storage$StorageDirectory.analyzeStorage(Storage.java:469) 
    at org.apache.hadoop.hdfs.server.namenode.FSImage.recoverTransitionRead(FSImage.java:297) 
    at org.apache.hadoop.hdfs.server.namenode.FSDirectory.loadFSImage(FSDirectory.java:99) 
    at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.initialize(FSNamesystem.java:358) 
    at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.<init>(FSNamesystem.java:327) 
    at org.apache.hadoop.hdfs.server.namenode.NameNode.initialize(NameNode.java:271) 
    at org.apache.hadoop.hdfs.server.namenode.NameNode.<init>(NameNode.java:465) 
    at org.apache.hadoop.hdfs.server.namenode.NameNode.createNameNode(NameNode.java:1239) 
    at org.apache.hadoop.hdfs.server.namenode.NameNode.main(NameNode.java:1248) 
12/01/07 15:13:47 ERROR namenode.NameNode: java.io.FileNotFoundException: /var/lib/hadoop-0.20/cache/hadoop/dfs/name/image/fsimage (Permission denied) 
    at java.io.RandomAccessFile.open(Native Method) 
    at java.io.RandomAccessFile.<init>(RandomAccessFile.java:233) 
    at org.apache.hadoop.hdfs.server.namenode.FSImage.isConversionNeeded(FSImage.java:683) 
    at org.apache.hadoop.hdfs.server.common.Storage.checkConversionNeeded(Storage.java:690) 
    at org.apache.hadoop.hdfs.server.common.Storage.access$000(Storage.java:60) 
    at org.apache.hadoop.hdfs.server.common.Storage$StorageDirectory.analyzeStorage(Storage.java:469) 
    at org.apache.hadoop.hdfs.server.namenode.FSImage.recoverTransitionRead(FSImage.java:297) 
    at org.apache.hadoop.hdfs.server.namenode.FSDirectory.loadFSImage(FSDirectory.java:99) 
    at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.initialize(FSNamesystem.java:358) 
    at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.<init>(FSNamesystem.java:327) 
    at org.apache.hadoop.hdfs.server.namenode.NameNode.initialize(NameNode.java:271) 
    at org.apache.hadoop.hdfs.server.namenode.NameNode.<init>(NameNode.java:465) 
    at org.apache.hadoop.hdfs.server.namenode.NameNode.createNameNode(NameNode.java:1239) 
    at org.apache.hadoop.hdfs.server.namenode.NameNode.main(NameNode.java:1248) 

12/01/07 15:13:47 INFO namenode.NameNode: SHUTDOWN_MSG: 
/************************************************************ 
SHUTDOWN_MSG: Shutting down NameNode at ubuntu/127.0.1.1 
************************************************************/ 

누군가가 여기 좀 도와 주시겠습니까

하둡 네임 노드? 나는 이것을 몇 시간 동안 고치려고 노력해왔다.

+0

이없는, 의미, "하둡 dfsadmin의 -format" 결과는 다음과 같습니다 : 오류 namenode.NameNode : java.io.IOException : 현재 디렉토리를 제거 할 수 없습니다 : /var/lib/hadoop-0.20/cache/hadoop/dfs/name/current – msknapp

+0

심지어 hadoop을 모두 제거하고 다시 설치했습니다. 나는 아직도이 같은 오류가있다. VM을 삭제하고 새로운 VM을 시작해야 할 것 같습니다. 이것은 하나의 거친 고약한 버그입니다. – msknapp

답변

6

hdfs를 구성한 위치로 이동하십시오. 거기에있는 모든 것을 지우고 형식 namenode 그리고 당신은 잘 가게됩니다. 일반적으로 클러스터를 제대로 종료하지 않으면 발생합니다!

+0

이제 작업에 hdfs 대신 로컬 파일 시스템을 사용하는 것으로 보입니다. 클러스터를 종료하는 "올바른"방법을 제게 설명해 주시겠습니까? 나는 특정한 방법으로 폐쇄 될 필요가 있다는 것을 알지 못했다. VM 전원을 끄면 클러스터가 제대로 종료되지 않습니다. – msknapp

+0

그래서 "start-all.sh"를 사용하여 시작할 때 클러스터의 namennode와 다른 모든 데몬을 jobtacker로 시작합니다. 제대로 종료하려면 "stop -all.sh"명령을 실행해야하며 이는 모든 것을 조심스럽게 종료합니다. 나는 당신이 그것을 닫을 것을 권한다. hdfs가 초기화 된 위치를 지우고 "hadoop namenode -format"을 수행 한 다음 클러스터를 재부팅한다. 이게 작동하는지 알려주세요. – inquire

+0

나는 루트 사용자로부터 실수로 namenode 프로세스를 시작한 비슷한 문제가 있었는데 나중에 hduser에서 수행해야한다는 것을 깨닫고 hduser에서 다시 포맷을 시도하고 유사한 문제에 직면했습니다.보고 나서 해결되었습니다. 당신의 대답, 많이 고마워요! 1 UP! – Ouroboros

0

다음과 같은 오류가 fsimage 파일

namenode.NameNode: java.io.FileNotFoundException: /var/lib/hadoop-0.20/cache/hadoop/dfs/name/image/fsimage (Permission denied) 

그래서 파일을 fsimage 권한을 부여 허가 그런데

$ chmod를의 -R 777 fsimage

관련 문제