1

我的 Hadoop 集群运行没有任何错误。我不知道发生了什么变化,但是当我尝试从 master 使用 start-all.sh 命令启动 Hadoop 组件时,我使用 jps 命令检查正在运行的进程,发现 DataNode 在从节点中不起作用。

数据节点日志如下。Hadoop 安装版本 (1.0.4) 在集群中的机器上是相同的。我找不到解决问题的方法。

2013-09-18 09:35:21,638 INFO org.apache.hadoop.hdfs.server.datanode.DataNode: STARTUP_MSG:
/************************************************************
STARTUP_MSG: Starting DataNode
STARTUP_MSG:   host = noon101/10.240.20.30
STARTUP_MSG:   args = []
STARTUP_MSG:   version = 1.0.4-SNAPSHOT
STARTUP_MSG:   build =  -r ; compiled by 'hduser' on Wed May 29 10:55:16 EEST 2013
************************************************************/
2013-09-18 09:35:21,752 INFO org.apache.hadoop.metrics2.impl.MetricsConfig: loaded properties from hadoop-metrics2.properties
2013-09-18 09:35:21,761 INFO org.apache.hadoop.metrics2.impl.MetricsSourceAdapter: MBean for source MetricsSystem,sub=Stats registered.
2013-09-18 09:35:21,762 INFO org.apache.hadoop.metrics2.impl.MetricsSystemImpl: Scheduled snapshot period at 10 second(s).
2013-09-18 09:35:21,762 INFO org.apache.hadoop.metrics2.impl.MetricsSystemImpl: DataNode metrics system started
2013-09-18 09:35:21,867 INFO org.apache.hadoop.metrics2.impl.MetricsSourceAdapter: MBean for source ugi registered.
2013-09-18 09:35:21,869 WARN org.apache.hadoop.metrics2.impl.MetricsSystemImpl: Source name ugi already exists!
2013-09-18 09:35:26,964 FATAL org.apache.hadoop.hdfs.server.datanode.DataNode: Incompatible build versions: namenode BV = 1393290; datanode BV =
2013-09-18 09:35:27,070 ERROR org.apache.hadoop.hdfs.server.datanode.DataNode: java.io.IOException: Incompatible build versions: namenode BV = 1393290; datanode BV =
        at org.apache.hadoop.hdfs.server.datanode.DataNode.handshake(DataNode.java:566)
        at org.apache.hadoop.hdfs.server.datanode.DataNode.startDataNode(DataNode.java:362)
        at org.apache.hadoop.hdfs.server.datanode.DataNode.<init>(DataNode.java:299)
        at org.apache.hadoop.hdfs.server.datanode.DataNode.makeInstance(DataNode.java:1582)
        at org.apache.hadoop.hdfs.server.datanode.DataNode.instantiateDataNode(DataNode.java:1521)
        at org.apache.hadoop.hdfs.server.datanode.DataNode.createDataNode(DataNode.java:1539)
        at org.apache.hadoop.hdfs.server.datanode.DataNode.secureMain(DataNode.java:1665)
        at org.apache.hadoop.hdfs.server.datanode.DataNode.main(DataNode.java:1682)

2013-09-18 09:35:27,071 INFO org.apache.hadoop.hdfs.server.datanode.DataNode: SHUTDOWN_MSG:
/************************************************************
SHUTDOWN_MSG: Shutting down DataNode at noon101/10.240.20.30
************************************************************/

以下是datanode日志的一部分。从节点:

STARTUP_MSG: Starting DataNode
STARTUP_MSG:   host = noon101/10.240.20.30
STARTUP_MSG:   args = []
STARTUP_MSG:   version = 1.0.4-SNAPSHOT
STARTUP_MSG:   build =  -r ; compiled by 'hduser' on Wed May 29 10:55:16 EEST 2013

主节点:

STARTUP_MSG: Starting DataNode
STARTUP_MSG:   host = noon102/10.240.20.32
STARTUP_MSG:   args = []
STARTUP_MSG:   version = 1.0.4
STARTUP_MSG:   build = https://svn.apache.org/repos/asf/hadoop/common/branches/branch-1.0 -r 1393290; compiled by 'hortonfo' on Wed Oct  3 05:13:58 UTC 2012

查看节点时,我看到版本和构建值不同。即使这是问题,我仍然不知道如何解决它。

4

2 回答 2

2

如果主名称节点上的 conf 目录发生任何类型的更改,通常会发生这种情况。您确定没有运行某种 ant 脚本或与 Hadoop 的“lib”目录中的 jar 文件混淆的东西吗?

这个问题似乎相当普遍。以下链接有一个明确的分步说明,说明如何挽救这种情况。它的要点是,您在备份后尝试将 Datanode 的 conf 目录复制到 Master 节点。

http://permalink.gmane.org/gmane.comp.jakarta.lucene.hadoop.user/22499

看看这是否有帮助。

于 2013-09-18T14:29:02.633 回答
1

我有同样的问题,它已经解决了!我多次收到错误“不兼容的构建版本:namenode BV = ; datanode BV = 985326”,因为我在 mapred-site.xml 中的 ... < configuration > 选项卡下有许多 <property> ... < /property > 选项卡。我必须确保所有节点(主+从)中的所有配置都相同。如果 <property> ...</property> 选项卡中的单个值在一个节点与另一个节点之间不同,您可能会看到不兼容的构建版本错误。

所以这里是总结: 1)确保你在所有节点中都有相同的 hadoop 版本。2) 确保所有节点中的所有 *-site.xml 都相同,即在 core-site.xml、mapred-site.xml 和 hdfs-site.xml 中使用相同的配置。

祝你好运!

于 2017-01-20T20:03:05.383 回答