赞
踩
在对集群进行启动时,使用指令start-all 但是slave节点上的datanode没有启动。
Expect Result:
在HadoopMaster终端上执行JPS指令,显示四个进程:
在HadoopSlave终端上执行JPS指令,显示三个进程:
而现在启动后,发现在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改动,因此失效。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。