假设我们有3台虚拟机,主机名分别是hadoop01、hadoop02和hadoop03。
这3台虚拟机的Hadoop的HA集群部署计划如下:

3台虚拟机的Hadoop的HA集群部署计划

hadoop01

zookeeper

journalnode

nodemanager

datanode

resourcemanager

namenode

zkfc

hadoop02

zookeeper

journalnode

nodemanager

datanode

resourcemanager

namenode

zkfc

hadoop03

zookeeper

journalnode

nodemanager

datanode

 

 

 

从上面的集群部署计划中可以看出,3台机器上都部署了Zookeeper、journalnode、nodemanager、datanode,而只有hadoop01和hadoop02这两台机器上部署有zkfc和ResourceManager以及NameNode。

下面是Hadoop的HA集群启动流程:
第一步,在Hadoop01机器上启动Zookeeper:
[root@hadoop01 ~]# /root/apps/zookeeper/bin/zkServer.sh start

第二步,在Hadoop02机器上启动Zookeeper:
[root@hadoop02 ~]# /root/apps/zookeeper/bin/zkServer.sh start

第三步,在Hadoop03机器上启动Zookeeper:
[root@hadoop03 ~]# /root/apps/zookeeper/bin/zkServer.sh start

启动Zookeeper之后,可以分别在3台机器上使用如下命令查看Zookeeper的启动状态:
/root/apps/zookeeper/bin/zkServer.sh status

第四步,在Hadoop01机器上启动HDFS:
[root@hadoop01 ~]# /root/apps/hadoop/sbin/start-dfs.sh

第五步,在Hadoop01机器上启动YARN:
[root@hadoop01 ~]# /root/apps/hadoop/sbin/start-yarn.sh

第六步,在Hadoop02机器上单独启动一个ResourceManager:
(注意这里使用的是“yarn-daemon.sh”命令,而不是“hadoop-daemon.sh”,不知道为什么使用“hadoop-daemon.sh”无法启动ResourceManager)
[root@hadoop02 ~]# /root/apps/hadoop/sbin/yarn-daemon.sh start resourcemanager

最后,分别在3台机器上使用jps命令查看进程:
[root@hadoop01 ~]# jps
2836 ResourceManager
2310 DataNode
2036 QuorumPeerMain
2630 DFSZKFailoverController
2481 JournalNode
2938 NodeManager
3212 Jps
2212 NameNode

[root@hadoop02 ~]# jps
2489 DFSZKFailoverController
3281 Jps
2193 QuorumPeerMain
2292 NameNode
2348 DataNode
3028 NodeManager
2427 JournalNode
3244 ResourceManager

[root@hadoop03 ~]# jps
2734 Jps
2420 DataNode
2327 QuorumPeerMain
2484 JournalNode
2616 NodeManager
[root@hadoop03 ~]#

如果某一个NameNode进程挂掉了的话,就使用如下命令单独启动一个NameNode:
/root/apps/hadoop/sbin/hadoop-daemon.sh start namenode
================================================================
下面是停止Hadoop的HA集群的流程:
第一步,在Hadoop01机器上停止HDFS:
[root@hadoop01 ~]# /root/apps/hadoop/sbin/stop-dfs.sh

第二步,在Hadoop01机器上停止YARN:
[root@hadoop01 ~]# /root/apps/hadoop/sbin/stop-yarn.sh

第三步,在Hadoop02机器上单独停止ResourceManager:
[root@hadoop02 ~]# /root/apps/hadoop/sbin/yarn-daemon.sh stop resourcemanager

第四步,在Hadoop01机器上停止Zookeeper:
[root@hadoop01 ~]# /root/apps/zookeeper/bin/zkServer.sh stop

第五步,在Hadoop02机器上停止Zookeeper:
[root@hadoop02 ~]# /root/apps/zookeeper/bin/zkServer.sh stop

第六步,在Hadoop03机器上停止Zookeeper:
[root@hadoop03 ~]# /root/apps/zookeeper/bin/zkServer.sh stop

最后,分别在3台机器上使用jps命令查看进程,确定有关进程是否停止成功。
[root@hadoop01 ~]# jps
4455 Jps

[root@hadoop02 sbin]# jps
4713 Jps

[root@hadoop03 ~]# jps
3208 Jps


如果启动或停止Hadoop的时候,遇到了问题,我们想查看一下日志,由于日志中的内容可能会非常多,我们改怎么查看呢?我们以查看hadoop01机器上的namenode的日志为例来说明一下,这里我们使用的是less命令:
[root@hadoop01 ~]# less /root/apps/hadoop/logs/hadoop-root-namenode-hadoop01.log
使用以上命令进入到日志之后,按回车光标处会显示一个冒号,输入斜杠“/”会进入到搜索模式,输入关键字再按回车,可以在日志中查询关键字小写的字母“n”可以向下搜索关键字,输入大写的字母“N”可以向上查找关键字。

在键盘上输入大写的字母“G”,可以瞬间跳转到日志的末尾。

输入小写字母“q”可以退出日志。