hadoop启动后DataNode没有启动

由于一些原因,我对namenode进行过很多次格式化,格式化时删除了Hadoop的临时存储目录tmp、namenode存储永久性元数据目录dfs/name、Hadoop系统日志文件目录log 中的内容 (注意是删除目录下的内容不是目录)

重新格式化后启动hadoop,发现DataNode没有启动

原因:

当我们使用hadoop namenode -format格式化namenode时,会在namenode数据文件夹(这个文件夹为自己配置文件中dfs.name.dir的路径)中保存一个current/VERSION文件,记录clusterID,datanode中保存的current/VERSION文件中的clustreID的值是上一次格式化保存的clusterID,这样,datanode和namenode之间的ID不一致。

解决方法:

在网上找了一些资料,都说是在dfs/name目录下找到一个current/VERSION文件,记录clusterID并复制。然后dfs/data目录下找到一个current/VERSION文件,将其中clustreID的值替换成刚刚复制的clusterID的值即可;

  • 可是我的name目录下是空的,根本没有current/VERSION文件
  • 不过,后来我查看DataNode的启动日志,发现了这个:

java.io.IOException: Incompatible clusterIDs in /usr/ywq/hadoop/hadoop-2.7.3/hdfs/data: namenode clusterID = CID-3ae066c8-ab28-4c8a-9502-2e1d04b8f7ec; datanode clusterID
= CID-be681874-c22b-4179-ba6a-988de05caedc

at org.apache.hadoop.hdfs.server.datanode.DataStorage.doTransition(DataStorage.java:775)
at org.apache.hadoop.hdfs.server.datanode.DataStorage.loadStorageDirectory(DataStorage.java:300)
at org.apache.hadoop.hdfs.server.datanode.DataStorage.loadDataStorage(DataStorage.java:416)
at org.apache.hadoop.hdfs.server.datanode.DataStorage.addStorageLocations(DataStorage.java:395)
at org.apache.hadoop.hdfs.server.datanode.DataStorage.recoverTransitionRead(DataStorage.java:573)
at org.apache.hadoop.hdfs.server.datanode.DataNode.initStorage(DataNode.java:1362)
at org.apache.hadoop.hdfs.server.datanode.DataNode.initBlockPool(DataNode.java:1327)
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)
2019-03-04 07:39:11,240 FATAL org.apache.hadoop.hdfs.server.datanode.DataNode: Initialization failed for Block pool (Datanode Uuid unassigned) service to master/192.168.43.241:9000. Exiting.
java.io.IOException: All specified directories are failed to load.
at org.apache.hadoop.hdfs.server.datanode.DataStorage.recoverTransitionRead(DataStorage.java:574)
at org.apache.hadoop.hdfs.server.datanode.DataNode.initStorage(DataNode.java:1362)
at org.apache.hadoop.hdfs.server.datanode.DataNode.initBlockPool(DataNode.java:1327)
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)
2019-03-04 07:39:11,240 WARN org.apache.hadoop.hdfs.server.datanode.DataNode: Ending
block pool service for: Block pool (Datanode Uuid unassigned) service to master/192.168.43.241:9000
2019-03-04 07:39:11,405 INFO org.apache.hadoop.hdfs.server.datanode.DataNode: Removed Block pool (Datanode Uuid unassigned)
2019-03-04 07:39:13,407 WARN org.apache.hadoop.hdfs.server.datanode.DataNode: Exiting Datanode
2019-03-04 07:39:13,408 INFO org.apache.hadoop.util.ExitUtil: Exiting with status 0
2019-03-04 07:39:13,414 INFO org.apache.hadoop.hdfs.server.datanode.DataNode: SHUTDOWN_MSG:
/************************************************************
SHUTDOWN_MSG: Shutting down DataNode at slave2/192.168.43.124
************************************************************/

日志这里给出了namenode的clusterID,用该clusterID把所有datanode节点机器中hadoop-2.7.2/dfs/data/current/VERSION中的clusterID替换掉即可。

然后重新启动,DataNode就可以正常启动了。

事实告诉我们,查看日志的重要性!!!

猜你喜欢

转载自blog.csdn.net/qq_41725214/article/details/88139703