Hbase 集群启动脚本分析
来源:互联网 发布:韩版衣服淘宝装修 编辑:程序博客网 时间:2024/04/28 08:32
说明
本文主要分析一下Hbase集群启动过程,只涉及到核心过程,不涉及到具体内容,hbase的版本是hbase-0.94.27.tar
整体流程:
- 运行start-hbase.sh脚本
- 执行 $bin/hbase-config.sh 设置配置参数
- 根据集群启动是否是分布式的模式,在本地仅启动master或者启动整个集群
- 判断启动模式:重新启动集群(restart)or初次启动集群(start)(缺省:start)
- 如果是分布式模式,依次启动如下服务:
启动zookeeper org.apache.hadoop.hbase.zookeeper.HQuorumPeer(这种情况是使用HBase自身管理Zookeeper)
启动master org.apache.hadoop.hbase.master.HMaster
启动${HBASE_REGIONSERVERS}目录中指定的regionserver org.apache.hbase.regionserver.HRegionServer
启动${HBASE_BACKUP_MASTERS}中指定的master-backup - 启动5中的服务会调用hbase-daemons.sh脚本,而该脚本最终调用hbase脚本启动服务对应的进程
start-hbase.sh脚本
- 执行hbase-config.sh脚本,设置环境变量
- 判断集群启动的模式,autorestart 或者start[默认]
- 判断分布模式
- 根据不同的分布模式,启动不同的服务;如果不是分布式模型,仅仅启动master服务,否则启动所有服务
由上可见,在启动服务的时候,调用的是hbase-daemons.sh和hbase-daemon.sh脚本完成的,首先看一下hbase-daemon.sh脚本
hbase-daemon.sh
- 该脚本的用法如下:
可以看出,command命令必须制定,以start-hbase.sh脚本中启动master为例
hbase-daemon –config ${HBASE_CONFI_DIR} start master
这里的command 就是start;而参数args就是master - 执行$bin/hbase-config.sh和$bin/hbase-common.sh设置环境变量
- 设置调度的优先级
- 判断$startStop=$1的类型,做相应的操作,这里以start命令为例跟踪进去
在start的时候,首先做预处理操作,然后打印启动状态信息,然后使用nohup后台启动命令
注意:在使用nohup启动的时候,命令再次运行了该脚本内容,只是这次将startStop的状态设置为 foreground_start,于是根据到case foreground_start选项中:
从红框中的源代码内容可以看到,最终的启动脚本都是调用/bin/hbase 命令来启动的
接下来分析下hbase-daemons.sh脚本的启动过程:
hbase-daemons.sh
- 执行$bin/hbase-config.sh 设置环境变量
- 执行在多个节点上批量启动服务的命令
从源代码中可以看出,该脚本最终调用hbase-daemon.sh脚本启动,实现批量在多个节点上启动服务
hbase-daemon.sh脚本内容已经分析过,且知道,最用调用hbase的守护进程启动各个服务,下面来分析下hbase守护进程
hbase
运行$bin/hbase-config.sh,设置环境变量信息
判断是否运行在cygwin环境中
判断输入参数个数,如果为0,则给出使用说明帮助
取出命令名称,并设置或者重写重要的环境参数
根据命令参数,找到要运行的类,以启动master为例
运行指定的类
ZooKeeper
zookeeper中的QuorumPeer的HBase版本,实现HBase自己管理zookeeper相关的功能
需要ZKConfig类来解析zoo.cfg文件中的配置
启动过程:
1. 解析Zookeeper的配置
2. 运行zkServer(zkConfig)
2.1如果zkConfig是分布式的,则运行QuorumPeerMain
2.1.1 首先实例化一个QuorumPeerMain对象,并调用initializeAndRun()
2.1.2 解析配置参数
2.1.3 清理数据目录
2.1.4 实例化QuorumPeer()并启动(如果是Standlone模式也会运行ZooKeeperServerMain)
2.2否则运行ZooKeeperServerMain
HMaster
- 实例化了一个HMasterCommandLine对象,启动一个新的进程,调用startMaster()方法
- 如果是local模式,则转向LocalHBaseCluster,在同一个JVM里同时启动master和regionserver
- 否则仅仅启动master
0 0
- Hbase 集群启动脚本分析
- HBase集群启动脚本流程分析
- 启动Hadoop集群和HBase集群脚本
- hbase 集群管理脚本
- HBase集群部署脚本
- Hbase集群启动流程
- Hbase启动脚本解析
- 常用HBase启动脚本
- kafka集群启动脚本
- mongo集群启动脚本
- 集群storm启动脚本
- Kafka 集群启动脚本
- 脚本启动zookeeper集群
- redis集群启动脚本
- HBASE启动脚本/Shell解析
- HBASE启动脚本/Shell解析
- HBASE启动脚本/Shell解析
- HBASE启动脚本/Shell解析
- idea 关于自动导包的设置
- 6 Python中的format()函数
- Hive的体系结构
- 清空自己,重新开始~ Like a baby
- MySql 外键约束 之CASCADE、SET NULL、RESTRICT、空等类型分析和作用解读
- Hbase 集群启动脚本分析
- xpath解析2
- 多线程落地数据库
- C 语 言 程 序 设 计 --国王的许诺
- sql与plsql2
- 欢迎使用CSDN-markdown编辑器
- linux 内存管理原理
- xpath解析3
- C++获取路径中的文件名