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查看进程,正确的进程如下所示:
如果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查看进程,正确的进程如下所示。
如果显示正确,则集群启动成功。
如果没有显示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查看进程
此时应该都是正确的了。