当前位置:   article > 正文

Hadoop集群启动,指令start-all.sh 但slave节点没有datanode_hadoop集群master开启dfs slave怎么没有

hadoop集群master开启dfs slave怎么没有

场景

在对集群进行启动时,使用指令start-all 但是slave节点上的datanode没有启动。
Expect Result:
在HadoopMaster终端上执行JPS指令,显示四个进程:
在HadoopMaster终端上
在HadoopSlave终端上执行JPS指令,显示三个进程:
在HadoopSlave终端
而现在启动后,发现在HadoopSlave终端上只有2个进程:

原因

原因如网上所说,是因为进行了多次格式化指令:
hdfs namenode -format
每次格式化都会重新你创建一个namenodeId,而在默认情况下tmp/dfs/data下包含了上次format下的id,格式化不会清空datanode下的数据,导致启动失败。这里我觉得有时候我们做stop-all.sh 对节点失效可能也是这个原因,因为tmp路径下的文件默认会有一段时间自动删除,这将导致id失效,所以在长久不做stop操作时,可能会导致。此时有部分人会在core-site.xml对tmp.dir进行指向,但是同样的指向路径的数据也不会因为格式化而被删除,这将导致路径中的VERSION文件中的namespaceId和ClusterID不一致,从而也可能造成的。

解决方案

1.停止集群: stop-all.sh
2.到文件 /etc/hadoop/core-site.xml,找到hadoop.tmp.dir,查看其所设值对应路径,如我的路径就是software/hadoop/hadoopdata
3. 软性操作:将路径上~/dfs/data/current对应的version文件上ClusterID和namespaceId值由Master复制给其它node节点(网上很多都是这么说的,我试了没啥用,可能是我操作问题)
4. 硬刚版操作:直接将路径这个hadoopdata文件删了,既然是已经做了格式化,那就将这个删了,直接在各个节点新建:[vp@slave01 ~]$ mkdir /software/hadoop/hadoopdata 然后在Master上做格式化,然后再执行start-all.sh (我是这么干的,有效)
5. 当然,也有说将temp路径下文件全部删除,试试的,这个可能是对hadoop.tmp.dir默认没有改动的考虑操作的,因为我已经对core-site.xml改动,因此失效。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/2023面试高手/article/detail/478160
推荐阅读
相关标签
  

闽ICP备14008679号