Datanode在单机上的Hadoop失败

时间:2012-10-25 06:13:34

标签: hadoop hadoop-plugins

我使用以下教程在ubuntu 12.04 LTS上设置并配置了sudo node hadoop环境 http://www.michael-noll.com/tutorials/running-hadoop-on-ubuntu-linux-multi-node-cluster/#formatting-the-hdfs-filesystem-via-the-namenode

输入hadoop / bin $ start-all.sh后 一切顺利然后我检查了Jps 然后NameNode,JobTracker,TaskTracker,SecondaryNode已经启动但DataNode没有启动......

如果有人知道如何解决此问题,请告知我们。

1 个答案:

答案 0 :(得分:3)

你我解决了......

java.io.IOException:不兼容的namespaceID

如果您看到错误java.io.IOException:DataNode的日志中不兼容的namespaceID(logs / hadoop-hduser-datanode-.log),您可能会受到HDFS-107(以前称为HADOOP)问题的影响-1212)。

我的机器上的完整错误看起来像这样:  ...错误org.apache.hadoop.dfs.DataNode:java.io.IOException:/ app / hadoop / tmp / dfs / data中的不兼容的namespaceID:namenode namespaceID = 308967713; datanode namespaceID = 113030094         在org.apache.hadoop.dfs.DataStorage.doTransition(DataStorage.java:281)         在org.apache.hadoop.dfs.DataStorage.recoverTransitionRead(DataStorage.java:121)         at org.apache.hadoop.dfs.DataNode.startDataNode(DataNode.java:230)         在org.apache.hadoop.dfs.DataNode。(DataNode.java:199)         在org.apache.hadoop.dfs.DataNode.makeInstance(DataNode.java:1202)         在org.apache.hadoop.dfs.DataNode.run(DataNode.java:1146)         at org.apache.hadoop.dfs.DataNode.createDataNode(DataNode.java:1167)         在org.apache.hadoop.dfs.DataNode.main(DataNode.java:1326) 此刻,似乎有两种解决方法,如下所述。

解决方法1:从头开始 我可以证明以下步骤解决了这个错误,但副作用不会让你开心(我也不会)。我找到的原始解决方法是:

停止群集 删除有问题的DataNode上的数据目录:该目录由conf / hdfs-site.xml中的dfs.data.dir指定;如果您按照本教程,相关目录是/ app / hadoop / tmp / dfs / data 重新格式化NameNode(注意:在此过程中,所有HDFS数据都会丢失!) 重新启动群集 删除所有HDFS数据并从头开始听起来不是一个好主意(在初始设置/测试期间可能没问题),您可能会尝试第二种方法。

解决方法2:更新有问题的DataNode的namespaceID 非常感谢Jared Stehler提出以下建议。我还没有自己测试过,但请随意尝试并向我发送反馈。此解决方法是“微创的”,因为您只需编辑有问题的DataNode上的一个文件:

停止DataNode 编辑/ current / VERSION中namespaceID的值以匹配当前NameNode的值 重新启动DataNode 如果您按照我的教程中的说明操作,相关文件的完整路径为:

NameNode:/ app / hadoop / tmp / dfs / name / current / VERSION DataNode:/ app / hadoop / tmp / dfs / data / current / VERSION(背景:dfs.data.dir默认设置为$ {hadoop.tmp.dir} / dfs / data,我们设置hadoop.tmp.dir在本教程中/ app / hadoop / tmp)。

以下网站明确给出了问题的解决方案:

http://www.michael-noll.com/tutorials/running-hadoop-on-ubuntu-linux-multi-node-cluster/#java-io-ioexception-incompatible-namespaceids