Hadoop NameNode无法启动,错误:FSNamesystem初始化失败。 java.io.FileNotFoundException

时间:2011-07-13 11:40:08

标签: hadoop

我得到的例外是,

2011-07-13 12:04:13,006 ERROR org.apache.hadoop.hdfs.server.namenode.NameNode: java.io.FileNotFoundException: File does not exist: /opt/data/tmp/mapred/system/job_201107041958_0120/j^@^@^@^@^@^@
        at org.apache.hadoop.hdfs.server.namenode.FSDirectory.unprotectedSetPermission(FSDirectory.java:544)
        at org.apache.hadoop.hdfs.server.namenode.FSEditLog.loadFSEdits(FSEditLog.java:724)
        at org.apache.hadoop.hdfs.server.namenode.FSImage.loadFSEdits(FSImage.java:992)
        at org.apache.hadoop.hdfs.server.namenode.FSImage.loadFSImage(FSImage.java:812)
        at org.apache.hadoop.hdfs.server.namenode.FSImage.recoverTransitionRead(FSImage.java:364)
        at org.apache.hadoop.hdfs.server.namenode.FSDirectory.loadFSImage(FSDirectory.java:87)
        at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.initialize(FSNamesystem.java:311)
        at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.<init>(FSNamesystem.java:292)
        at org.apache.hadoop.hdfs.server.namenode.NameNode.initialize(NameNode.java:201)
        at org.apache.hadoop.hdfs.server.namenode.NameNode.<init>(NameNode.java:279)
        at org.apache.hadoop.hdfs.server.namenode.NameNode.createNameNode(NameNode.java:956)
        at org.apache.hadoop.hdfs.server.namenode.NameNode.main(NameNode.java:965)

2011-07-13 14:45:02,780 ERROR org.apache.hadoop.hdfs.server.namenode.FSNamesystem: FSNamesystem initialization failed.
java.io.FileNotFoundException: File does not exist: /opt/data/tmp/mapred/system/job_201107041958_0120/j^@^@^@^@^@^@
        at org.apache.hadoop.hdfs.server.namenode.FSDirectory.unprotectedSetPermission(FSDirectory.java:544)
        at org.apache.hadoop.hdfs.server.namenode.FSEditLog.loadFSEdits(FSEditLog.java:724)
        at org.apache.hadoop.hdfs.server.namenode.FSImage.loadFSEdits(FSImage.java:992)
        at org.apache.hadoop.hdfs.server.namenode.FSImage.loadFSImage(FSImage.java:812)
        at org.apache.hadoop.hdfs.server.namenode.FSImage.recoverTransitionRead(FSImage.java:364)
        at org.apache.hadoop.hdfs.server.namenode.FSDirectory.loadFSImage(FSDirectory.java:87)
        at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.initialize(FSNamesystem.java:311)
        at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.<init>(FSNamesystem.java:292)
        at org.apache.hadoop.hdfs.server.namenode.NameNode.initialize(NameNode.java:201)
        at org.apache.hadoop.hdfs.server.namenode.NameNode.<init>(NameNode.java:279)
        at org.apache.hadoop.hdfs.server.namenode.NameNode.createNameNode(NameNode.java:956)
        at org.apache.hadoop.hdfs.server.namenode.NameNode.main(NameNode.java:965)

2 个答案:

答案 0 :(得分:0)

问题(编辑日志损坏)得到解决。我使用了-importCheckpoint选项。

我只是想告诉你可能发生编辑日志损坏的可能情况/原因(如果我错了,请纠正我),

以下是hdfs-site.xml中的典型配置

hadoop.tmp.dir : /opt/data/tmp
dfs.name.dir : /opt/data/name
dfs.data.dir : /opt/data/data
mapred.local.dir : ${hadoop.tmp.dir}/mapred/local

/ opt / data是一个已安装的存储,大小为50GB。 Namenode,SecondaryNamenode($ {hadoop.tmp.dir} / dfs / namesecondary)&amp; Datanode目录在/ opt / data本身中配置。

一旦我移动了3.6GB压缩(bz2)文件,我猜/ opt / data /这个目录的内存使用情况。可能是100%(我在这次事件后检查了($ df -h))。然后,我用简单的“选择”查询运行Hive,它的job.jar文件也需要在已经没有空格的同一目录中创建。所以这就是编辑日志腐败可能发生的原因。

这对我来说真的很好学!现在我已经改变了这些配置。

答案 1 :(得分:-1)

似乎文件位置不存在。我宁愿将hdfs目录存放在与/ tmp不同的其他位置。确保hdfs-site.xml具有定义的dir路径的那些属性,以显示数据和名称节点。这解决了我的问题。