我正在尝试以伪分布式模式安装hadoop2.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:
11条答案
按热度按时间uelo1irk1#
每当出现以下错误时,尝试在从属计算机上启动dn:
这是因为在设置集群之后,无论出于什么原因,您都决定重新格式化nn。你在奴隶上的dns仍然引用旧的nn。
要解决这个问题,只需在本地linux fs中删除并重新创建该计算机上的数据文件夹,即/home/hadoop/dfs/data。
在该计算机上重新启动该dn的守护程序将重新创建数据/文件夹的内容并解决问题。
bcs8qyzn2#
您必须执行以下操作:
bin/stop-all.sh
rm -Rf /home/prassanna/usr/local/hadoop/yarn_data/hdfs/*bin/hadoop namenode -format
我也有同样的问题,直到我在这个网站上找到了答案。nnvyjq4y3#
我在伪分布式环境中遇到了类似的问题。我首先停止了集群,然后从namenode的版本文件中复制集群id并将其放入datanode的版本文件中,然后重新启动集群,一切正常。
我的数据路径是/usr/local/hadoop/hadoop\u store/hdfs/datanode和/usr/local/hadoop/hadoop\u store/hdfs/namenode。
仅供参考:版本文件位于/usr/local/hadoop/hadoop\u store/hdfs/datanode/current/;namenode也是如此。
qyyhg6bp4#
我也有类似的问题。我从所有节点中删除了namenode和datanode文件夹,然后重新运行:
从命令行检查运行状况报告(我建议这样做)
所有的节点都正常工作了。
cxfofazt5#
hadoop2.7.7也有同样的问题
我删除了namenode和所有datanode上的namenode/current&datanode/current目录
已在删除文件
/tmp/hadoop-ubuntu/*
然后格式化namenode和datanode重新启动所有节点。
一切正常
步骤:停止所有节点/管理器,然后尝试以下步骤
rm -rf /tmp/hadoop-ubuntu/*
(所有节点)rm -r /usr/local/hadoop/data/hdfs/namenode/current
(namenode:检查hdfs-site.xml
用于路径)rm -r /usr/local/hadoop/data/hdfs/datanode/current
(datanode:checkhdfs-site.xml
用于路径)hdfs namenode -format
(在namenode上)hdfs datanode -format
(在namenode上)重新启动namenode和data节点
ejk8hzay6#
你可以用下面的方法,
复制到剪贴板数据节点clusterid对于您的示例,cid-8bf63244-0510-4db6-a949-8f74b50f2be9
并在hadoop\u home/bin目录下运行以下命令
然后这个代码用datanode集群id格式化namenode。
wfveoks07#
datanode因与namenode相比不兼容的ClusterId而死亡。要解决此问题,需要删除目录/tmp/hadoop-[user]/hdfs/data并重新启动hadoop。
qvk1mo1f8#
对于这个问题有不同的解决方案,但我测试了另一个简单的解决方案,效果非常好:
因此,如果有人遇到相同的错误,您只需使用版本文件中namenode的clusterid更改datanodes中的clusterid。
对于您的案例,您可以在datanode端更改它:
名称节点clusterid=cid-fb61aa70-4b15-470e-a1d0-12653e357a10;数据节点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
和改变群集ID=cid-8bf63244-0510-4db6-a949-8f74b50f2be9
具有
群集ID=cid-fb61aa70-4b15-470e-a1d0-12653e357a10
重新启动datanode,它应该可以工作。
kmpatx3s9#
在这里,datanode会立即停止,因为datanode和namenode的clusterid不同。因此,必须将namenode的clusterid格式化为datanode的clusterid
复制示例的datanode clusterid,cid-8bf63244-0510-4db6-a949-8f74b50f2be9,并从主目录运行以下命令。你只需打字就可以进入你的家庭目录
cd
在你的终端上。现在从home dir输入命令:
vxf3dgd410#
删除core-site.xml中指定的namenode和datanode目录。之后,创建新目录并重新启动dfs和yarn。
jexiocij11#
执行以下简单步骤
清除hadoop的数据目录
再次格式化namenode
启动群集
在此之后,如果没有任何其他配置问题,集群将正常启动