HA 模式 Hadoop+ZooKeeper+Hbase启动顺序
一. 背景(原http://blog.csdn.net/u011414200/article/details/50437356 ,对其进行了一定更改)
1.1 网络上的大部分教程
都是机器间含有SSH联通来启动的。生产环境一般都是不配置SSH机器之间互通的。
1.2 主机规划
IP | 主机名 | 用户名 | 部署模块 | 进程 |
---|---|---|---|---|
10.6.3.43 | master5 | hadoop5 | NameNode ResourceManager HBase |
NameNode DFSZKFailoverController ResourceManager HMaster JobHistoryServer |
10.6.3.33 | master52 | hadoop5 | NameNode ResourceManager HBase |
NameNode DFSZKFailoverController ResourceManager HMaster JobHistoryServer |
10.6.3.48 | slave51 | hadoop5 | DataNode NodeManager Zookeeper HBase |
DataNode NodeManager HRegionServer JournalNode QuorumPeerMain |
10.6.3.32 | slave52 | hadoop5 | DataNode NodeManager Zookeeper HBase |
DataNode NodeManager HRegionServer JournalNode QuorumPeerMain |
10.6.3.36 | slave53 | hadoop5 | DataNode NodeManager Zookeeper HBase |
DataNode NodeManager HRegionServer JournalNode QuorumPeerMain |
1.3 正确的启动顺序
1. ZooKeeper -> Hadoop -> HBase
2. 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 的主机上启动相应进程。分别登陆到三台机子上执行:
zkServer.sh start
- 1
2. 格式化 ZooKeeper 集群
在任意的 namenode 上都可以执行,笔者还是选择了 master5 主机执行格式化命令
hdfs zkfc -formatZK
- 1
3. 启动 JournalNode 集群
分别在 slave51、slave52、slave53 上执行以下命令
hadoop-daemon.sh start journalnode
- 1
4. 格式化集群的 NameNode
在 master5 的主机上执行以下命令,以格式化 namenode:
hdfs namenode -format
- 1
5. 启动刚格式化的 NameNode
刚在 master5 上格式化了 namenode ,故就在 master5 上执行
hadoop-daemon.sh start namenode
- 1
6. 同步 NameNode1 元数据到 NameNode2 上
复制你 NameNode 上的元数据目录到另一个 NameNode,也就是此处的 master5 复制元数据到 master52 上。在 master52 上执行以下命令:
hdfs namenode -bootstrapStandby
- 1
7. 启动 NameNode2
master52 主机拷贝了元数据之后,就接着启动 namenode 进程了,执行
hadoop-daemon.sh start namenode
- 1
8. 启动集群中所有的DataNode
在所有datanode节点上执行
hadoop-daemon.sh start datanode
- 1
9. 在 RM1 启动 YARN
在 master5 的主机上执行以下命令:
yarn-daemon.sh start resourcemanager
- 1
10. 在 RM2 单独启动 YARN
虽然上一步启动了 YARN ,但是在 master52 上是没有相应的 ResourceManager 进程,故需要在 master52 主机上单独启动:
yarn-daemon.sh start resourcemanager
- 1
11. 启动 ZKFC
在 master5 和 master52 的主机上分别执行如下命令:
hadoop-daemon.sh start zkfc
- 1
12. 开启历史日志服务
在 master5 和 master52 的主机上执行
mr-jobhistory-daemon.sh start historyserver
- 1
13. 启动主 HMaster
在其中一台主机上启动 Hmaster,即笔者在 master5 上
hbase-daemon.sh start master
- 1
14. 启动备份 HMaster
另一台 Hmaster 的主机上,即笔者在 master52 上,执行以下命令
hbase-daemon.sh start master
- 1
三. 开启与关闭集群顺序
3.1 Hadoop 生态系统集群的启动顺序概览
以下中标注红色加粗的即为笔者集群目前已经安装的。
顺序 | 服务 | 备注 | 有关说明和更多信息 |
---|---|---|---|
1 | ZooKeeper | 建议在启动 HDFS 之前先启动 ZooKeeper;这是高可用性 (HA) 部署中的要求。在任何情况下,始终在 HBase 之前先启动 ZooKeeper | 在单个服务器上安装 ZooKeeper Server 包并启动 ZooKeeper;在生产环境中安装 ZooKeeper;部署 HDFS High Availability;为 ResourceManager (YARN) 配置 高可用性 |
2 | HDFS | 除 ZooKeeper 以外,在所有其它服务之前先启动 HDFS。如果您正在使用 HA,请参阅高可用性指南中的说明 | 在集群中部署 HDFS; HDFS 高可用性 |
3 | HttpFS | HttpFS 安装 | |
4a | MRv1 | 在 Hive 或 Oozie 之前先启动 MapReduce。如果 YARN 正在运行,请勿启动 MRv1 | 在集群中部署 MapReduce v1 (MRv1);为 JobTracker (MRv1) 配置 高可用性 |
4b | YARN | 在 Hive 或 Oozie 之前启动 YARN。如果 MRv1 正在运行,请勿启动 YARN | 在集群中部署 MapReduce v2 (YARN) |
5 | HBase | 启动 HBase Master;在分布式集群中部署 HBase | |
6 | Hive | 在启动 HiveServer2 和 Hive console 之前先启动 Hive Metastore | 安装 Hive |
7 | Oozie | 启动 Oozie Server | |
8 | Flume 1.x | 运行 Flume | |
9 | Sqoop | Sqoop 安装和 Sqoop 2 安装 | |
10 | Hue | Hue 安装 |
3.2 非首次启动集群
顺序 | 步骤 | 操作主机 | 命令 | 开启的相应进程 |
---|---|---|---|---|
1 | 启动 ZooKeeper 集群 | slave51、slave52、slave53 | zkServer.sh start |
QuorumPeerMain |
2 | 启动 JournalNode 集群 | slave51、slave52、slave53 | hadoop-daemon.sh start journalnode |
JournalNode |
3 | 启动刚格式化的 NameNode | master5 | hadoop-daemon.sh start namenode |
NameNode |
4 | 同步 NameNode1 元数据到 NameNode2 上 | master52 | hdfs namenode -bootstrapStandby |
|
5 | 启动 NameNode2 | master52 | hadoop-daemon.sh start namenode |
NameNode |
6 | 启动集群中所有的DataNode | 1) master5 2) slave51、slave52、slave53 (二者选一即可,下同) |
1) hadoop-daemons.sh start datanode 2) hadoop-daemon.sh start datanode |
DataNode |
7 | 在 RM1 启动 YARN | master5 | start-yarn.sh |
ResourceManager(master5) NodeManager(slave节点) |
8 | 在 RM2 单独启动 YARN | master52 | yarn-daemon.sh start resourcemanager |
ResourceManager |
9 | 启动 ZKFC | master5 与 master52 | hadoop-daemon.sh start zkfc |
DFSZKFailoverController |
10 | 开启历史日志服务 | master5 | mr-jobhistory-daemon.sh start historyserver |
JobHistoryServer |
11 | 启动主 HMaster 和 HRegionServer | master5 | start-hbase.sh |
HMaster (master5上) HRegionServer (slave节点上) |
12 | 启动备份 HMaster | master52 | hbase-daemon.sh start master |
HMaster |
Note:与 “首次启动格式化集群” 不同的是没有 格式化 ZooKeeper 集群 和 格式化集群的 NameNode 这两个步骤!
3.3 Hadoop 生态系统集群的关闭顺序概览
以下中标注红色加粗的即为笔者集群目前已经安装的。
关闭顺序 | 服务 | 备注 | 有关说明和更多信息 |
---|---|---|---|
1 | Hue | 在 Hue Server 机器上运行以下内容以停止 Hue:sudo service hue stop |
|
2a | Sqoop 1 | 在运行其的所有节点上运行以下内容:sudo service sqoop-metastore stop |
|
2b | Sqoop 2 | 在运行其的所有节点上运行以下内容:sudo /sbin/service sqoop2-server stop |
|
3 | Flume 0.9 | 在运行 Flume Node 进程的每个节点上将其停止:sudo service flume-node stop 停止 Flume Master: sudo service flume-master stop |
|
4 | Flume 1.x | 没有 Flume Master | 在运行 Flume Node 进程的每个节点上将其停止:sudo service flume-ng-agent stop |
5 | Oozie | sudo service oozie stop |
|
6 | Hive | 要停止 Hive,请退出 Hive 控制台,并确保没有 Hive 脚本运行,关闭 HiveServer2:sudo service hiveserver2 stop 关闭每个客户端上的 Hive Metastore Daemon: sudo service hive-metastore stop 如果 Metastore 从命令行运行,使用 Ctrl-c 将其关闭 |
|
7 | HBase | 停止 Thrift Server 和客户端,然后关闭集群 | 要停止 Thrift Server 和客户端:sudo service hbase-thrift stop 要关闭集群,请在主节点上使用此命令: hbase-daemon.sh stop master 在托管 Region Server 的每个节点上使用以下命令: hbase-daemon.sh stop regionserver |
8a | MapReduce v1 | 停止 MapReduce 之前先停止 Hive 和 Oozie | 要停止 MapReduce,请停止 JobTracker service,然后在运行 Task Tracker 的所有节点上将其停止。使用以下命令: sudo service hadoop-0.20-mapreduce-jobtracker stop sudo service hadoop-0.20-mapreduce-tasktracker stop |
8b | YARN | 停止 YARN 之前先停止 Hive 和 Oozie | 要停止 YARN,请在运行 MapReduce JobHistory 服务、ResourceManager 服务和 NodeManager 的所有节点上停止这些服务。使用以下命令:hadoop-daemon.sh stop historyserver yarn-daemon.sh stop resourcemanager yarn-daemon.sh stop nodemanager |
9 | HttpFS | sudo service hadoop-httpfs stop |
|
10 | HDFS | 要停止 HDFS:在 NameNode 上:hadoop-daemon.sh stop namenode 在 Secondary NameNode 上(如果使用): hadoop-daemon.sh stop secondnamenode 在每个 DataNode 上: hadoop-daemon.sh stop datanode |
|
11 | ZooKeeper | 在停止 ZooKeeper 之前先停止 HBase 和 HDFS | 要停止 ZooKeeper Server,请在每个 ZooKeeper 节点上使用以下命令:zkServer.sh stop |
3.4 集群关闭
顺序 | 步骤 | 操作主机 | 命令 | 关闭的相应进程 |
---|---|---|---|---|
1 | 关闭备份 HMaster | master52 | hbase-daemon.sh stop master |
HMaster |
2 | 关闭主 HMaster 和 HRegionServer | master5 | stop-hbase.sh |
HMaster (master5上) HRegionServer (slave节点上) |
3 | 关闭历史日志服务 | master5 | mr-jobhistory-daemon.sh stop historyserver |
JobHistoryServer |
4 | 关闭 ZKFC | master5 与 master52 | hadoop-daemon.sh stop zkfc |
DFSZKFailoverController |
5 | 在 RM2 单独关闭 YARN | master52 | yarn-daemon.sh stop resourcemanager |
ResourceManager |
6 | 在 RM1 关闭 YARN | master5 | stopt-yarn.sh |
ResourceManager (master5) NodeManager (slave节点) |
7 | 关闭集群中所有的DataNode | 1) master5 2) slave51、slave52、slave53 (二者选一即可,下同) |
1) hadoop-daemons.sh stop datanode 2) hadoop-daemon.sh stop datanode |
DataNode |
8 | 关闭 NameNode2 | master52 | hadoop-daemon.sh stop namenode |
NameNode |
9 | 关闭剩下的 NameNode | master5 | hadoop-daemon.sh stop namenode |
NameNode |
10 | 关闭 JournalNode 集群 | slave51、slave52、slave53 | hadoop-daemon.sh stop journalnode |
JournalNode |
11 | 关闭 ZooKeeper 集群 | slave51、slave52、slave53 | zkServer.sh stop |
QuorumPeerMain |
注意:一定要按顺序停止。之间的依赖关系很重要、