自己搭建的hadoop 环境,在启动后通过jps指令查看进程发现DateNode进程消失了,不知道是什么原因
第一步:DataNode进程启动失败需要确定启动失败的原因,可以到logs目录查看对应的datanode日志信息。
如果你没有自定义配置日志输出目录,那就默认在${HADOOP_HOME}/logs目录下,通过指令或者下载datanode相关日志文件到本地查看异常信息,这里我们发现异常如下:
java.io.IOException: Incompatible clusterIDs in /opt/modules/hadoop-2.5.0/data/tmp/dfs/data: namenode clusterID = CID-2904e8aa-ff11-4ae7-a64e-c1c8269d1905; datanode clusterID = hadoop-senior.nixuange.com
at org.apache.hadoop.hdfs.server.datanode.DataStorage.doTransition(DataStorage.java:477)
at org.apache.hadoop.hdfs.server.datanode.DataStorage.recoverTransitionRead(DataStorage.java:226)
at org.apache.hadoop.hdfs.server.datanode.DataStorage.recoverTransitionRead(DataStorage.java:254)
at org.apache.hadoop.hdfs.server.datanode.DataNode.initStorage(DataNode.java:975)
at org.apache.hadoop.hdfs.server.datanode.DataNode.initBlockPool(DataNode.java:946)
at org.apache.hadoop.hdfs.server.datanode.BPOfferService.verifyAndSetNamespaceInfo(BPOfferService.java:278)
at org.apache.hadoop.hdfs.server.datanode.BPServiceActor.connectToNNAndHandshake(BPServiceActor.java:220)
at org.apache.hadoop.hdfs.server.datanode.BPServiceActor.run(BPServiceActor.java:812)
at java.lang.Thread.run(Thread.java:745)
第二步:发现异常原因 我们通过异常信息发现发生异常的原因在于namenode 的clusterID 和datanode clusterID 不一致导致的。
namenode clusterID = CID-2904e8aa-ff11-4ae7-a64e-c1c8269d1905; datanode clusterID = hadoop-senior.nixuange.com
第三步:解决方案
1)查看hdfs-site.xml配置
找到dfs.name.dir(元数据保存目录)和dfs.data.dir(hdfs数据保存目录)的配置(hadoop3.x可能是dfs.namenode.name.dir和dfs.datanode.data.dir,在官方文档有默认值)
2)到主节点的${dfs.name.dir}/current下查看VERSION文件,查看clusterID
到从节点的${dfs.data.dir}/current下查看VERSION文件,查看clusterID
两者确实不一样!
3)修改从节点VERSION文件的clusterID与主节点一致
4)保存退出,重启hadoop,发现DataNode进程正常启动。
stop-all.sh
start-all.sh
jps
5)访问 web ui : http://node1:9870/dfshealth.html#tab-datanode , WEB UI 出现三个datanode