1.1 网络上的大部分教程的顺序
1. 启动顺序
- Hadoop
- ZooKeeper
- HBase
- 第二个HMaster
2. 停止顺序
- 第二个 HMaster,kill-9 删除
- Hbase
- ZooKeeper
- Hadoop
Note:网上的以上的顺序并不适合 HA 模式下
1.2 主机规划
1.3 正确的启动顺序
1. ZooKeeper -> Hadoop -> HBase2. ZooKeeper -> JournalNode (Hadoop) -> NameNode (Hadoop) -> DataNode (Hadoop) -> 主 ResourceManager/NodeManager (Hadoop) -> 备份 ResourceManager (Hadoop) -> ZKFC (Hadoop) ->MapReduce JobHistory (Hadoop) -> 主 Hmaster/HRegionServer (HBase) ->备份 Hmaster (HBase)
二. 首次启动/格式化集群
1. 启动 ZooKeeper 集群在集群中安装 ZooKeeper 的主机上启动 ZooKeeper 服务。在本教程中也就是在 slave51、slave52、slave53 的主机上启动相应进程。分别登陆到三台机子上执行:
1
|
zkServer.sh start
|
2. 格式化 ZooKeeper 集群在任意的 namenode 上都可以执行,笔者还是选择了 master5 主机执行格式化命令
1
|
hdfs zkfc –formatZK
|
3. 启动 JournalNode 集群分别在 slave51、slave52、slave53 上执行以下命令
1
|
hadoop–daemon.sh start journalnode
|
4. 格式化集群的 NameNode在 master5 的主机上执行以下命令,以格式化 namenode:
1
|
hdfs namenode –format
|
5. 启动刚格式化的 NameNode刚在 master5 上格式化了 namenode ,故就在 master5 上执行
1
|
adoop–daemon.sh start namenode
|
6. 同步 NameNode1 元数据到 NameNode2 上复制你 NameNode 上的元数据目录到另一个 NameNode,也就是此处的 master5 复制元数据到 master52 上。在 master52 上执行以下命令:
1
|
hdfs namenode –bootstrapStandby
|
7. 启动 NameNode2master52 主机拷贝了元数据之后,就接着启动 namenode 进程了,执行
1
|
hadoop–daemon.sh start namenode
|
8. 启动集群中所有的DataNode在 master5 上执行
1
|
hadoop–daemons.sh start datanode
|
9. 在 RM1 启动 YARN在 master5 的主机上执行以下命令:
1
|
start–yarn.sh
|
10. 在 RM2 单独启动 YARN虽然上一步启动了 YARN ,但是在 master52 上是没有相应的 ResourceManager 进程,故需要在 master52 主机上单独启动:
1
|
yarn–daemon.sh start resourcemanager
|
11. 启动 ZKFC在 master5 和 master52 的主机上分别执行如下命令:
1
|
hadoop–daemon.sh start zkfc
|
12. 开启历史日志服务在 master5 和 master52 的主机上执行
1
|
mr–jobhistory–daemon.sh start historyserver
|
13. 启动主 HMaster在其中一台主机上启动 Hmaster,即笔者在 master5 上
1
|
start–hbase.sh
|
14. 启动备份 HMaster另一台 Hmaster 的主机上,即笔者在 master52 上,执行以下命令
1
|
hbase–daemon.sh start master
|
三. 开启与关闭集群顺序
3.1 Hadoop 生态系统集群的启动顺序概览
以下中标注红色加粗的即为笔者集群目前已经安装的。
3.2 非首次启动集群
Note:与 “首次启动格式化集群” 不同的是没有 格式化 ZooKeeper 集群 和 格式化集群的 NameNode 这两个步骤!
3.3 Hadoop 生态系统集群的关闭顺序概览
以下中标注红色加粗的即为笔者集群目前已经安装的。
3.4 集群关闭
注意:一定要按顺序停止,如果先停 ZooKeeper 再停 HBase 的话,基本停不下来
四. 常见问题与参考资料
4.1 常见问题
1. 我启动 ZKFC 和 NameNode 守护进程的顺序重要么?
不重要,在任何给定的节点上,你可以任意顺序启动 ZKFC 和 NameNode 进程
2. 如果Zookeeper宕机会怎样?
如果 Zookeeper 集群宕机,没有自动故障转移将会被触发。但是,HDFS 将继续没有任何影响的运行。当 Zookeeper 被重新启动,HDFS 将重新连接,不会出现问题
3. 我可以指定两个 NameNode 中的一个作为主要的 NameNode 么?
当然不可以。目前,这是不支持的。先启动的 NameNode 将会先变成 Active 状态。你可以指定的顺序,先启动你希望成为 Active 的节点,来完成这个目的。所以笔者我在后面的集群管理脚本中,启动完一台 NameNode 后再启动 ZKFC。和以上的顺序有点出入,但一点问题都木有~