Datanode无法正确启动

时间:2014-03-11 03:58:47

标签: hadoop hadoop2

我正在尝试以伪分布式模式安装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: 

10 个答案:

答案 0 :(得分:71)

您可以执行以下方法,

  

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

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

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

然后这段代码使用datanode cluster id格式化了namenode。

答案 1 :(得分:15)

每当您遇到以下错误时,尝试在从属计算机上启动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的守护程序将重新创建数据/文件夹的内容并解决 问题。

答案 2 :(得分:10)

执行以下简单步骤

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

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

答案 3 :(得分:6)

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

rm -r /tmp/hadoop-[user]/hdfs/data

答案 4 :(得分:5)

我在伪分布式环境中遇到了类似的问题。我先停止了群集,然后从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。

答案 5 :(得分:4)

这里,datanode立即停止,因为datanode和namenode的clusterID不同。因此,您必须使用datanode的clusterID

格式化namenode的clusterID

复制您的示例的datanode clusterID,CID-8bf63244-0510-4db6-a949-8f74b50f2be9,然后从您的主目录运行以下命令。您只需在终端上输入cd即可转到您的家庭目录。

现在从你的家庭目录输入命令:

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

答案 6 :(得分: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

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

答案 7 :(得分:1)

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

答案 8 :(得分:1)

我对hadoop 2.7.7有同样的问题

我删除了namenode上的namenode / current和datanode / current目录以及所有数据节点

  • 已删除/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. 重新启动名称节点和数据节点

答案 9 :(得分:0)

对此问题有不同的解决方案,但是我测试了另一个简单的解决方案,它的工作原理很吸引人:

因此,如果有人遇到相同的错误,则只需要用VERSION文件中的namenode的clusterID更改数据节点中的clusterID。

根据您的情况,可以在datanode端进行更改:

namenode clusterID = CID-fb61aa70-4b15-470e-a1d0-12653e357a10; datanode clusterID = 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

重新启动datanode,它应该可以工作。