Datanode无法正确启动

use*_*600 36 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: 
Run Code Online (Sandbox Code Playgroud)

ice*_*erg 78

你可以做以下方法,

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

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

./hdfs namenode -format -clusterId CID-8bf63244-0510-4db6-a949-8f74b50f2be9
Run Code Online (Sandbox Code Playgroud)

然后这段代码用datanode簇id格式化了namenode.

  • 很好的答案,这对我有用。我只想指出,您应该从namenode(而不是有问题的datanode)运行此命令。 (3认同)
  • 感谢冰山,但似乎大家都错过了一个重要的步骤来使重组效果:重新启动namenode。 (2认同)
  • 有谁知道为什么这是必要的?这种随机损坏的原因是什么? (2认同)
  • 我希望 [Apache 文档](http://hadoop.apache.org/docs/r3.1.1/hadoop-project-dist/hadoop-common/SingleCluster.html) 对所有这些信息不要那么迟钝!谢谢你的帮助!!! (2认同)

Mou*_*una 19

你必须这样做:

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

在我在本网站找到答案之前,我遇到了同样的问题.


eli*_*sah 15

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

java.io.IOException: Incompatible clusterIDs in /home/hadoop/dfs/data: namenode clusterID= ****; datanode clusterID = ****
Run Code Online (Sandbox Code Playgroud)

这是因为在您设置群集后,无论出于何种原因,您决定重新格式化您的NN.您在奴隶上的DN仍然可以参考旧的NN.

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

在该计算机上重新启动该DN的守护程序将重新创建数据/文件夹的内容并解决问题.


Vik*_*dia 10

请执行以下简单步骤

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

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


sof*_*udi 7

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

rm -r /tmp/hadoop-[user]/hdfs/data
Run Code Online (Sandbox Code Playgroud)


S N*_*S N 6

我在伪分布式环境中遇到了类似的问题.我先停止了群集,然后从NameNode的版本文件中复制了Cluster 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.


Nei*_*eil 5

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

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

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

hdfs namenode -format -clusterId CID-8bf63244-0510-4db6-a949-8f74b50f2be9
Run Code Online (Sandbox Code Playgroud)