原因:是因为多次格式化NameNode的原因,每次格式化NameNode的时候,hadoop集群就会产生一个新的集群ID,导致了NameNode和DataNode的集群ID不一致,所以导致运行start-all.sh后,hadoop的NameNode进程启动不起来。
现在作者附上两种解决方法,我是使用了第二种方法成功的。
第一种解决方案:
在hadoop集群当中的所有节点将中的tmp文件删除和logs文件里面的内容删除里面的的内容,然后重新初始化NameNode。
hdfs NameNode -format
在core-site.xml文件里面查看自己tmp文件的位置:
hadoop路径下etc/hadoop路径下面,每个人hadoop安装的路径可能不同,我的是
/home/hadoop/software/hadoop-3.3.0/etc/hadoop
就可以了,如果这不行的话,就使用第二种解决方法,这个是能得吃的。
第二种解决方案:
将主节点的hadoop的包删掉,从从节点将hadoop的包用scp传输过去,因为集群当中的hadoop的包里面的内容都是一样的。
scp -r hadoop-3.3.0/ [email protected]:/home/hadoop/software
前面的目录是自己从节点的hadoop包,然后后面的目录是要传输到主节点的目录。
注意:传输好之后一定要将hadoop的tmp文件里面的内容清除过后再进行格式化NameNode。并且之前一定即使NameNode没有启动,也要将hadoop集群关闭,如果使用第二个方案的话,那么之前hdfs里面的数据将会清空。
版权归原作者 浩林ovo 所有, 如有侵权,请联系我们删除。