假设我们有3台虚拟机,主机名分别是hadoop01、hadoop02和hadoop03。
这3台虚拟机的Hadoop的HA集群部署计划如下:
3台虚拟机的Hadoop的HA集群部署计划
| zookeeper | journalnode | nodemanager | datanode | resourcemanager | namenode | zkfc |
| zookeeper | journalnode | nodemanager | datanode | resourcemanager | namenode | zkfc |
| 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”可以退出日志。