Hadoop集群启动、关闭及问题解决。

514 阅读2分钟

Hadoop集群的启动和关闭。

1: 在~/.bashrc中配置环境变量

 export PATH=$PATH:/usr/local/hadoop/bin:/usr/local/hadoop/sbin

2:使用以下命令启动hadoop

 start-dfs.sh
 start.yarn.sh

 上述两条命令也可以直接使用以下一条命令代替

start-all.sh

3: 启动日志相关服务

 mr-jobhistory-daemon.sh start historyserver

4:启动后通过jps查看进程,正确的进程如下所示:

Image.png

如果jps进程显示正确,则跳到第5步。

如果jps命令没有NameNode这个进程,则解决方案如下:

4.1 关闭集群和日志相关服务

stop-all.sh
mr-jobhistory-daemon.sh stop historyserver

4.2 切换到hadoop的目录下将logs与tmp文件删除,并创建新的logs

cd /usr/local/hadoop
rm -rf tmp
rm -rf log
mkdir logs

上述命令如果没有权限 加sudo即可。

4.3 重新格式化namenode

hdfs namenode -format

4.4 重新启动集群和日志相关服务

start-all.sh
mr-jobhistory-daemon.sh start historyserver

5 在从节点上通过jps查看进程,正确的进程如下所示。

Image.png

如果显示正确,则集群启动成功。

如果没有显示DateNode这个进程,有可能是由于刚才4.3步骤重新格式化namenode所导致的VERSION里面的nameid、clusterID、blockpollID变化,导致matser节点跟slave服务器的ID无法匹配,进而无法启动DataNode。

解决方案1如下:

5.1.1 关闭集群和日志相关服务

stop-all.sh
mr-jobhistory-daemon.sh stop historyserver

5.1.2  进行如下操作

在master节点的/usr/local/hadoop/tmp/dfs/name/current目录下找到VERSION文件中的clusterID,将其复制到slaver/usr/local/hadoop/tmp/dfs/data/current目录下VSRSION文件中的clusterID。

5.1.3 然后重新启动集群和日志相关服务

start-all.sh
mr-jobhistory-daemon.sh start historyserver

5.1.4 分别在主节点和从节点执行jps命令查看进程。

如果进程都显示正确,说明集群正常启动成功。

如果上述按照上述解决方案执行后,又出现部分slaver节点通过jps查看发现DataNode正常启动,而另一部分slaver节点通过jps查看发现DataNode进程未启动,则使用解决方案2(也可以跳过方案1,直接使用方案2),如下:

5.2.1 关闭集群和日志相关服务

stop-all.sh
mr-jobhistory-daemon.sh stop historyserver

5.1.2   在所有slaver节点上进入到tmp目录,删掉目录下所有的内容

cd /usr/local/hadoop/
rm -rf \*

5.1.3 重新格式化namenode。

在hadoop目录下执行:

./bin/hdfs namenode -format

5.1.4 然后重新启动集群和日志相关服务

start-all.sh
mr-jobhistory-daemon.sh start historyserver

5.1.5 分别在主节点和从节点上执行jps查看进程

此时应该都是正确的了。