【问题标题】:Datanode failing in Hadoop on single MachineDatanode在单台机器上的Hadoop中失败
【发布时间】:2012-10-15 06:50:51
【问题描述】:

我使用以下教程在 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没有启动...

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

【问题讨论】:

    标签: hadoop hadoop-plugins


    【解决方案1】:

    我解决了...

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

    如果您在 DataNode 的日志 (logs/hadoop-hduser-datanode-.log) 中看到错误 java.io.IOException: Incompatible namespaceIDs,那么您很可能受到问题 HDFS-107(以前称为 HADOOP)的影响-1212)。

    我的机器上的完整错误如下所示: ... 错误 org.apache.hadoop.dfs.DataNode:java.io.IOException:/app/hadoop/tmp/dfs/data 中的 namespaceID 不兼容:namenode namespaceID = 308967713;数据节点命名空间ID = 113030094 在 org.apache.hadoop.dfs.DataStorage.doTransition(DataStorage.java:281) 在 org.apache.hadoop.dfs.DataStorage.recoverTransitionRead(DataStorage.java:121) 在 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) 在 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 上编辑一个文件:

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

    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

    【讨论】:

    • 你找出原因了吗?我自己在更改 hdfs-site.xml 中的 dfs.* 参数时遇到了这个错误。有适用的一般规则吗?这个错误可以避免吗?
    • @rretzbach 没问题,如果您安装 HDFS,则必须先对其进行格式化。就像硬盘一样。不要安装在 tmp 分区上,因为它会在每次重启时被删除,所以你必须每次都重新格式化你的 namenode。
    猜你喜欢
    • 2022-12-22
    • 2015-01-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-28
    • 2014-06-21
    相关资源
    最近更新 更多