datanode无法启动的原因以及解决办法

当datanode无法启动时,关键在于分析日志以定位问题。常见原因是namenode和datanode的集群ID不一致,这可能是由于多次namenode格式化导致的新集群ID产生。解决办法是手动同步datanode的集群ID至namenode,或者删除data文件夹并重新格式化namenode以生成新的集群ID。

1.datanode无法启动的原因有很多,出现问题首先应该去看日志来定位问题所在,日志一般在logs文件夹下
2.看一下我datanode启动失败的日志

2019-11-23 20:56:25,106 FATAL org.apache.hadoop.hdfs.server.datanode.DataNode: Initialization failed for Block pool <registering> (Datanode Uuid unassigned) service to hadoop102/192.168.1.102:9000. Exiting. 
java.io.IOException: All specified directories are failed to load.
	at org.apache.hadoop.hdfs.server.datanode.DataStorage.recoverTransitionRead(DataStorage.java:478)
	at org.apache.hadoop.hdfs.server.datanode.DataNode.initStorage(DataNode.java:1358)
	at org.apache.hadoop.hdfs.server.datanode.DataNode.initBlockPool(DataNode.java:1323)
	at org.apache.hadoop.hdfs.server.datanode.BPOfferService.verifyAndSetNamespaceInfo(BPOfferService.java:317)
	at org.apache.hadoop.hdfs.server.datanode.BPServiceActor.connectToNNAndHandshake(BPServiceActor.java:223)
	at org.apache.hadoop.hdfs.server.datanode.BPServiceActor.run(BPServiceActor.java:802)
	at java.lang.Thread.run(Thread.java:748)

这个错误的原因就是在最开始namenode格式化之后,又进行了一次格式化,导致产生新的集群ID(每次namenode格式化之后都会产生新的集群ID),格式化之后data的集群ID并不会自动更新,需要删除原有的ID,在重新格式化即可。
namenode的集群ID在这里:
/data/tmp/dfs/name/current/VERSION
datanode的集群ID在这里:
data/tmp/dfs/data/current/VERSION

每次格式化namenode会自动更新,但是datanode不会自动更新,只需要将datanode的集群ID与namenode的保持一致就可以,不过我一般都是将data文件夹直接干掉(简单粗暴),然后重新格式化namenode就会自动生成新的了。

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值