一 发现问题
当我们安装完毕hadoop后,输入jps,发现有NameNode,但是却没有DataNode。那么,为什么会出现这个问题呐?格式 化 NameNode,会产生新的集群 id,导致 NameNode 和 DataNode 的集群 id 不一致,集群找不到已往数据。如果集群在运行过程中报错,需要重新格式 化 NameNode 的话,一定要先停止 namenode 和 datanode 进程,并且要删 除所有机器的 data 和 logs 目录,然后再进行格式化。那么,我们只需要把NameNode和DataNode 的ID改为相同的就好了。
二 解决问题
如何去寻找NameNode和DataNode的ID呐? 我们要找到VERSION这个文件,在这个文件中进行修改。
我个人更习惯于在xshell中通过命令去查找VERSION这个文件,那接下来就通过xshell去查找吧!
首先,我们打开集群后,先找到你存放hadoop的文件夹中,我的存放到了module中,进入到hadoop-3.1.3/中(hadoop版本不一样,hadoop的后缀也不一样,这不碍事)
在这个目录下输入ls,然后进入到data,再输入ls,进入到data,输入ls,进入到dfs中(有的进入data中后,是tmp,那就输入ls,进入到dfs中),输入ls,进入到data,输入ls,进入到current中,输入ls,发现了VISION,然后就可以vi VERSION了。
然后,我们复制一下会话,输入cd ..这个命令回到dfs这个目录下,输入ls,进入到name中,接下来重复以上操作,进入到name目录下的VERSION编辑页面。(右键上方的会话,就可以看到复制会话,然后点击)
进入到data下的VERSION的编辑页面
查看这两个的clusterID是否一致,如果不一致,那我们就讲他们改为一样的就好了,修改后,保存退出(因为我的已经改好过了,所以一致),再重新启动一下集群,输入jps,发现就有DataNode。
如果,你还有哪些疑问,欢迎评论和私信,如果有不恰当或需要改正的地方的地方,也非常欢迎进行指正。希望可以帮助你们去解决这个问题。