【Hadoop】集群启动后,jps没有datanode,检查发现clusterid一致
问题说明
像平常一样,使用./start-all.sh脚本后,发现jps没有datanode
查找原因
1 clusterid不一致
初次启动hadoop时候,namenode与datanode的clusterid保持一致。
后来启动集群,发现jps中没有datanode,通常情况下,是namenode多次format,导致namenode的clusterid改变,而datanode没有改变,造成两者的的clusterid不一致。
1.1 查看datanode与namenode的clusterid
1.1.1 文件路径
datanode和namenode的clusterid,分别保存在两个的文件夹下的VERSION文件中。
而两个的文件夹,是在hdfs-site.xml中配置的。
namenode:dfs.namenode.name.dir
datanode:dfs.datanode.data.dir
我的路径分别是:
1.1.2 查看clusterid
datanode:
>cd /data/hadoop/dfs/data/current/
>cat VERSION|grep 'clusterID'
clusterID=CID-7a947ad6-8742-4dae-bb64-1a09b3d39342
namenode:
>cat /data/hadoop/dfs/name/current/VERSION |grep 'clusterID'
clusterID=CID-7a947ad6-8742-4dae-bb64-1a09b3d39342
1.1.3 不一致就修改datanode的clusterid
如果:clusterID不一致,修改datanode的clusterID,使namenode和datanode的clusterID保持一致就可以,然后重启集群查看JPS,一般就解决了。
我这里发现我的两个的clusterID两个是一致的,所以排除这个问题。
1.2 单独启动datanode试试:
hadoop-deamon.sh start datanode
datanode running as process 2672. Stop it first.
提示,datanode已经在运行了,重启整个集群,解决问题
总结
- 执行start-all.sh的时候粗心,没有注意到提示!
- jps没有datanode ,一般情况都是clusterID不一致导致的,修改datanode的clusterID就好。