41

我正在尝试以伪分布式模式安装 Hadoop 2.2.0。当我尝试启动datanode服务时,它显示以下错误,谁能告诉我如何解决这个问题?

**2**014-03-11 08:48:15,916 INFO org.apache.hadoop.hdfs.server.datanode.DataNode: Block pool <registering> (storage id unknown) service to localhost/127.0.0.1:9000 starting to offer service
2014-03-11 08:48:15,922 INFO org.apache.hadoop.ipc.Server: IPC Server Responder: starting
2014-03-11 08:48:15,922 INFO org.apache.hadoop.ipc.Server: IPC Server listener on 50020: starting
2014-03-11 08:48:16,406 INFO org.apache.hadoop.hdfs.server.common.Storage: Lock on /home/prassanna/usr/local/hadoop/yarn_data/hdfs/datanode/in_use.lock acquired by nodename 3627@prassanna-Studio-1558
2014-03-11 08:48:16,426 FATAL org.apache.hadoop.hdfs.server.datanode.DataNode: Initialization failed for block pool Block pool BP-611836968-127.0.1.1-1394507838610 (storage id DS-1960076343-127.0.1.1-50010-1394127604582) service to localhost/127.0.0.1:9000
java.io.IOException: Incompatible clusterIDs in /home/prassanna/usr/local/hadoop/yarn_data/hdfs/datanode: namenode clusterID = CID-fb61aa70-4b15-470e-a1d0-12653e357a10; datanode clusterID = CID-8bf63244-0510-4db6-a949-8f74b50f2be9
    at**** org.apache.hadoop.hdfs.server.datanode.DataStorage.doTransition(DataStorage.java:391)
    at org.apache.hadoop.hdfs.server.datanode.DataStorage.recoverTransitionRead(DataStorage.java:191)
    at org.apache.hadoop.hdfs.server.datanode.DataStorage.recoverTransitionRead(DataStorage.java:219)
    at org.apache.hadoop.hdfs.server.datanode.DataNode.initStorage(DataNode.java:837)
    at org.apache.hadoop.hdfs.server.datanode.DataNode.initBlockPool(DataNode.java:808)
    at org.apache.hadoop.hdfs.server.datanode.BPOfferService.verifyAndSetNamespaceInfo(BPOfferService.java:280)
    at org.apache.hadoop.hdfs.server.datanode.BPServiceActor.connectToNNAndHandshake(BPServiceActor.java:222)
    at org.apache.hadoop.hdfs.server.datanode.BPServiceActor.run(BPServiceActor.java:664)
    at java.lang.Thread.run(Thread.java:662)
2014-03-11 08:48:16,427 WARN org.apache.hadoop.hdfs.server.datanode.DataNode: Ending block pool service for: Block pool BP-611836968-127.0.1.1-1394507838610 (storage id DS-1960076343-127.0.1.1-50010-1394127604582) service to localhost/127.0.0.1:9000
2014-03-11 08:48:16,532 INFO org.apache.hadoop.hdfs.server.datanode.DataNode: Removed Block pool BP-611836968-127.0.1.1-1394507838610 (storage id DS-1960076343-127.0.1.1-50010-1394127604582)
2014-03-11 08:48:18,532 WARN org.apache.hadoop.hdfs.server.datanode.DataNode: Exiting Datanode
2014-03-11 08:48:18,534 INFO org.apache.hadoop.util.ExitUtil: Exiting with status 0
2014-03-11 08:48:18,536 INFO org.apache.hadoop.hdfs.server.datanode.DataNode: SHUTDOWN_MSG: 
4

11 回答 11

89

您可以执行以下方法,

复制到剪贴板数据节点 clusterID 为您的示例,CID-8bf63244-0510-4db6-a949-8f74b50f2be9

并在 HADOOP_HOME/bin 目录下运行以下命令

./hdfs namenode -format -clusterId CID-8bf63244-0510-4db6-a949-8f74b50f2be9

然后这段代码用datanode集群ID格式化了namenode。

于 2014-09-09T06:59:53.540 回答
20

您必须执行以下操作:

  • bin/stop-all.sh
  • rm -Rf /home/prassanna/usr/local/hadoop/yarn_data/hdfs/*
  • bin/hadoop namenode -format

在我在这个网站上找到答案之前,我遇到了同样的问题。

于 2014-03-11T10:44:28.910 回答
16

每当您遇到错误时,尝试在从属计算机上启动 DN:

java.io.IOException: Incompatible clusterIDs in /home/hadoop/dfs/data: namenode clusterID= ****; datanode clusterID = ****

这是因为在您设置集群后,无论出于何种原因,您决定重新格式化您的 NN。从属服务器上的 DN 仍然引用旧的 NN。

要解决此问题,只需在本地 Linux FS 中删除并重新创建该计算机上的数据文件夹,即 /home/hadoop/dfs/data。

在该机器上重新启动该 DN 的守护程序将重新创建 data/ 文件夹的内容并解决问题。

于 2014-06-24T10:01:18.800 回答
13

执行以下简单步骤

  • 清除hadoop的数据目录
  • 再次格式化namenode
  • 启动集群

在此之后,如果您没有任何其他配置问题,您的集群将正常启动

于 2014-03-11T11:13:08.030 回答
8

与 NameNode 相比,DataNode 因 Clusterid 不兼容而死亡。要解决此问题,您需要删除目录 /tmp/hadoop-[user]/hdfs/data 并重新启动 hadoop。

rm -r /tmp/hadoop-[user]/hdfs/data
于 2015-11-22T15:11:02.667 回答
6

我在我的伪分布式环境中遇到了类似的问题。我先停止集群,然后从NameNode的版本文件中复制集群ID并将其放入DataNode的版本文件中,然后重新启动集群后一切正常。

我的数据路径在这里/usr/local/hadoop/hadoop_store/hdfs/datanode 和/usr/local/hadoop/hadoop_store/hdfs/namenode。

仅供参考:版本文件位于 /usr/local/hadoop/hadoop_store/hdfs/datanode/current/ 下;NameNode 也是如此。

于 2014-11-28T11:30:52.803 回答
5

在这里,datanode 立即停止,因为 datanode 和 namenode 的 clusterID 不同。所以你必须用datanode的clusterID格式化namenode的clusterID

复制示例的数据节点集群 ID,CID-8bf63244-0510-4db6-a949-8f74b50f2be9 并从主目录运行以下命令。cd您只需在终端上键入即可转到您的主目录。

现在从您的主目录键入命令:

hdfs namenode -format -clusterId CID-8bf63244-0510-4db6-a949-8f74b50f2be9
于 2016-08-03T23:37:48.993 回答
2

删除 core-site.xml 中指定的 namenode 和 datanode 目录。之后创建新目录并重新启动 dfs 和 yarn。

于 2017-05-04T12:12:36.353 回答
2

我也有类似的问题。我从所有节点中删除了 namenode 和 datanode 文件夹,然后重新运行:

$HADOOP_HOME/bin> hdfs namenode -format -force
$HADOOP_HOME/sbin> ./start-dfs.sh
$HADOOP_HOME/sbin> ./start-yarn.sh

从命令行检查健康报告(我会推荐)

$HADOOP_HOME/bin> hdfs dfsadmin -report

我让所有节点都正常工作。

于 2017-11-15T21:20:36.340 回答
2

我对 hadoop 2.7.7 有同样的问题

我删除了名称节点和所有数据节点上的名称节点/当前和数据节点/当前目录

  • 删除的文件位于/tmp/hadoop-ubuntu/*
  • 然后格式化namenode和datanode
  • 重启所有节点。
  • 一切正常

步骤:停止所有节点/管理器,然后尝试以下步骤

  1. rm -rf /tmp/hadoop-ubuntu/* (所有节点)
  2. rm -r /usr/local/hadoop/data/hdfs/namenode/current (namenode:检查hdfs-site.xml路径)
  3. rm -r /usr/local/hadoop/data/hdfs/datanode/current (数据节点:检查hdfs-site.xml路径)
  4. hdfs namenode -format (在名称节点上)
  5. hdfs datanode -format (在名称节点上)
  6. 重启名称节点和数据节点
于 2019-03-27T13:00:17.473 回答
0

这个问题有不同的解决方案,但我测试了另一个简单的解决方案,它就像一个魅力:

因此,如果有人遇到同样的错误,您只需将 datanodes 中的 clusterID 更改为 VERSION 文件中 namenode 的 clusterID。

对于您的情况,您可以在 datanode 端更改它:

名称节点集群 ID = CID-fb61aa70-4b15-470e-a1d0-12653e357a10;数据节点集群 ID = CID-8bf63244-0510-4db6-a949-8f74b50f2be9

  • 备份当前版本:cp /home/prassanna/usr/local/hadoop/yarn_data/hdfs/datanode/current/VERSION /home/prassanna/usr/local/hadoop/yarn_data/hdfs/datanode/current/VERSION.BK
  • vim /home/prassanna/usr/local/hadoop/yarn_data/hdfs/datanode/current/VERSION和改变

clusterID=CID-8bf63244-0510-4db6-a949-8f74b50f2be9

clusterID=CID-fb61aa70-4b15-470e-a1d0-12653e357a10

重新启动数据节点,它应该可以工作。

于 2020-10-28T09:57:14.353 回答