伪分布式运行模式下启动数据节点(datanode)失败的原因分析及解决方案

1. 进入到目录/opt/module/hadoop-2.7.2,然后启动名称节点(namenode)和数据节点(datanode):

2.查看是否启动成功,结果出现了如下截图所示的内容:

即,数据节点启动失败,为什么会出现这种现象呢?于是我查看了启动日志,日志所在的路径为:

/opt/module/hadoop-2.7.2/logs/hadoop-root-datanode-hadoop101.log

[[email protected] hadoop-2.7.2]# cat logs/hadoop-root-datanode-hadoop101.log

日志内容显示,数据节点datanode启动失败,最后hadoop关闭了datanode.

3.该问题该怎么解决呢?

出现该问题的原因是:多次格式化namenode,会产生新的集群id(clusteredID),从而导致NameNodeDataNode的集群id不一致。

位于data/tmp/dfs目录下分别有两个文件夹,分别是name文件夹和data文件夹。

先看datanode文件夹下的内容:vim data/current/version,如下截图:

再看namenode文件夹下的内容:vim name/current/version,结果集群ID值如下:

clusterID= CID-349e28cb-f7a9-4f42-8160-a633d8bf4eb2

也就是说datanode中的集群ID(clusterID)与namenode中的集群ID(clusterID)不一致,这样就导致数据节点(datanode)启动失败。我的做法是把namenode中的集群ID(clusterID)的值复制粘贴到datanode中的集群ID(clusterID)的值上,保存退出,重新启动数据节点:sbin/hadoop-daemon.sh start datanode,最后再看一下集群启动情况:jps, 结果如下截图:

成功了。