4

我在 VirtualBox 的 ubuntu 11.0.4 上安装了 hadoop 1.0.4(与我的主机名相同),数据节点以某种方式关闭,在日志文件中出现以下错误

/************************************************************
STARTUP_MSG: Starting DataNode
STARTUP_MSG:   host = VirtualBox/127.0.1.1
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
************************************************************/
2013-08-18 19:52:21,301 INFO org.apache.hadoop.metrics2.impl.MetricsConfig: loaded properties from hadoop-metrics2.properties
2013-08-18 19:52:21,394 INFO org.apache.hadoop.metrics2.impl.MetricsSourceAdapter: MBean for source MetricsSystem,sub=Stats registered.
2013-08-18 19:52:21,412 INFO org.apache.hadoop.metrics2.impl.MetricsSystemImpl: Scheduled snapshot period at 10 second(s).
2013-08-18 19:52:21,417 INFO org.apache.hadoop.metrics2.impl.MetricsSystemImpl: DataNode metrics system started
2013-08-18 19:52:23,207 INFO org.apache.hadoop.metrics2.impl.MetricsSourceAdapter: MBean for source ugi registered.
2013-08-18 19:52:23,276 WARN org.apache.hadoop.metrics2.impl.MetricsSystemImpl: Source name ugi already exists!
2013-08-18 19:52:26,887 ERROR org.apache.hadoop.hdfs.server.datanode.DataNode: java.io.IOException: Incompatible namespaceIDs in /app/hadoop/tmp/dfs/data: namenode namespaceID = 457871323; datanode namespaceID = 2066655210
    at org.apache.hadoop.hdfs.server.datanode.DataStorage.doTransition(DataStorage.java:232)
    at org.apache.hadoop.hdfs.server.datanode.DataStorage.recoverTransitionRead(DataStorage.java:147)
    at org.apache.hadoop.hdfs.server.datanode.DataNode.startDataNode(DataNode.java:385)
    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-08-18 19:52:26,903 INFO org.apache.hadoop.hdfs.server.datanode.DataNode: SHUTDOWN_MSG: 
/************************************************************
SHUTDOWN_MSG: Shutting down DataNode at VirtualBox/127.0.1.1
************************************************************/

知道为什么吗?我该如何解决?

4

5 回答 5

11

我已经发生过几次这种情况。如果重新启动数据节点没有帮​​助,请执行以下操作:

  1. 重启Hadoop
  2. 转到 /app/hadoop/tmp/dfs/name/current
  3. 开放版本(即 by vim VERSION
  4. 记录命名空间ID
  5. 转到 /app/hadoop/tmp/dfs/data/current
  6. 开放版本(即 by vim VERSION
  7. 将 namespaceID 替换为您在步骤 4 中记录的 namespaceID。

这应该可以解决问题。

于 2013-08-18T16:19:21.273 回答
1

当我们格式化名称节点时,这是众所周知的问题。请参考以下网址:

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

于 2013-08-18T16:04:41.000 回答
0

这通常会在您格式化名称节点并且不执行数据节点清理并且您的名称空间更改时出现。

可能的解决方案:

尝试删除/app/hadoop/tmp/dfs/data目录并重启datanode

于 2013-08-18T16:03:00.950 回答
0

我在名称节点上丢失了数据。我不得不格式化我的namenode

hadoop namenode -format

启动namenode后,datanode因VERSION问题无法启动

然后我还需要从数据节点中删除所有数据。

我可以简单地清理 dfs (/{hadoop.tmp.dir}/dfs/data/*) 中的数据文件夹并重新启动 datanode

IErm -rf /{hadoop.tmp.dir}/dfs/data/*

或者

删除VERSION文件(/{hadoop.tmp.dir}/dfs/data/current/VERSION)并重启datanode

于 2014-07-16T17:44:33.077 回答
-2
Restart Hadoop
Go to /app/hadoop/tmp/dfs/name/current
Open VERSION (i.e. by vim VERSION)
Record namespaceID
Go to /app/hadoop/tmp/dfs/data/current
Open VERSION (i.e. by vim VERSION)
Replace the namespaceID with thve namespaceID you recorded in step 4.

要执行上述步骤,我在数据文件夹 /tmp/data 中没有任何文件

于 2014-09-18T07:15:56.127 回答