搭建完全分布式模式后,启动Hadoop发现没有DataNode进程。下面来说说怎样解决这个问题。


  • 一、 问题描述
  • 二、 问题分析
  • 三、 解决方法
  • 3.1 方法一
  • 3.2 方法二


一、 问题描述

在从节点(Slave)执行命令jps后,发现没有运行DataNode。

hadoop jps不显示进程 hadoop启动jps没有datanode_hadoop

二、 问题分析

在启动Hadoop之前,进行了多次格式化,导致DataNode的ID发生了变化。

三、 解决方法

我们可以从 删除所有的DataNode资料 ,或者让 NameNode与DataNode的ID一致 ,这两个方向去解决这个问题。

3.1 方法一

删除 所有DataNode资料 ,再启动集群。

打开集群中运行DataNode进程的机子,找到VERSION文件(该文件的路径是自己之前搭建环境时所配置的,根据自己的配置去查找),如下图所示

下图是在Xshell连上虚拟机后,通过Xftp的图形界面去找文件;当然也可以通过命令去查找文件。

hadoop jps不显示进程 hadoop启动jps没有datanode_hadoop_02


VERSION文件删掉(要将 集群中每个 运行DataNode进程主机的VERSION文件都删掉)

hadoop jps不显示进程 hadoop启动jps没有datanode_hadoop_03


接着,重新格式化

hadoop namenode -format

再重启集群,执行jps命令查看

hadoop jps不显示进程 hadoop启动jps没有datanode_hadoop jps不显示进程_04

3.2 方法二

把DataNode的ID改为NameNode的ID。

上面3.1是通过Xftp查找文件的,这里演示下通过命令去查找文件。如果习惯通过图形界面查找文件的话,也可以使用Xftp查找。

首先,打开自己的hadoop目录,找到 dfs 目录(根据自己的配置找),在dfs目录下面有一个 data 目录和一个 name 目录

hadoop jps不显示进程 hadoop启动jps没有datanode_大数据_05


接着进入name目录,查看到有一个名为current的目录,如下图所示

hadoop jps不显示进程 hadoop启动jps没有datanode_hadoop_06


再进入current目录,里面会有一个VERSION文件,执行命令打开它(gedit这个位置可以用 vi 或者 vim 代替)

gedit VERSION

hadoop jps不显示进程 hadoop启动jps没有datanode_分布式_07


打开后,把这个ID复制下来

hadoop jps不显示进程 hadoop启动jps没有datanode_大数据_08

退回 dfs 目录,打开该目录中的 data 目录下的 current 文件,如下图所示

hadoop jps不显示进程 hadoop启动jps没有datanode_hadoop_09

执行命令打开 VERSION 文件(这个是data目录下的VERSION文件,别搞错了)

gedit VERSION

hadoop jps不显示进程 hadoop启动jps没有datanode_hadoop jps不显示进程_10


把上面在name目录下的 VERSION 文件中,复制的ID粘贴到这里。输入以下命令使之生效

source VERSION

重新格式化

hadoop namenode -format

再重启就可以解决这个问题了。


如果文章对你有帮助,请点个,留给评论支持一下😊,若有疑问可以私信留言😉。如果能给个三连(点赞收藏关注 )就最好啦😁。