Datanode在单机上的Hadoop失败

Jai*_*l R 5 hadoop hadoop-plugins

我使用以下教程在ubuntu 12.04 LTS上设置并配置了sudo节点hadoop环境 http://www.michael-noll.com/tutorials/running-hadoop-on-ubuntu-linux-multi-node-cluster/#formatting-the -hdfs-文件系统经由最名称节点

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

如果有任何人知道如何解决这个问题,请告诉我..

Jai*_*l R 3

是的,我解决了...

\n\n

java.io.IOException:不兼容的命名空间ID

\n\n

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

\n\n

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

\n\n

解决方法 1:从头开始\n我可以证明以下步骤可以解决此错误,但副作用不会\xe2\x80\x99 不会让你高兴(我也一样)。我发现的粗略解决方法是:

\n\n

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

\n\n

解决方法 2:更新有问题的 DataNode 的命名空间 ID\n非常感谢 Jared Stehler 提出以下建议。我还没有亲自测试过,但请随意尝试并向我发送您的反馈。此解决方法是 \xe2\x80\x9c 侵入性最小\xe2\x80\x9d,因为您只需编辑有问题的 DataNode 上的一个文件:

\n\n

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

\n\n

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

\n\n

该问题的解决方案在以下站点中明确给出:

\n\n

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

\n