Hbase 集群启动脚本分析

原创 2016年09月30日 18:10:22

说明

本文主要分析一下Hbase集群启动过程,只涉及到核心过程,不涉及到具体内容,hbase的版本是hbase-0.94.27.tar

整体流程:

  1. 运行start-hbase.sh脚本
  2. 执行 $bin/hbase-config.sh 设置配置参数
  3. 根据集群启动是否是分布式的模式,在本地仅启动master或者启动整个集群
  4. 判断启动模式:重新启动集群(restart)or初次启动集群(start)(缺省:start)
  5. 如果是分布式模式,依次启动如下服务:
    启动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
  6. 启动5中的服务会调用hbase-daemons.sh脚本,而该脚本最终调用hbase脚本启动服务对应的进程

start-hbase.sh脚本

  1. 执行hbase-config.sh脚本,设置环境变量
    这里写图片描述
  2. 判断集群启动的模式,autorestart 或者start[默认]
    这里写图片描述
  3. 判断分布模式
    这里写图片描述
  4. 根据不同的分布模式,启动不同的服务;如果不是分布式模型,仅仅启动master服务,否则启动所有服务
    这里写图片描述
    由上可见,在启动服务的时候,调用的是hbase-daemons.sh和hbase-daemon.sh脚本完成的,首先看一下hbase-daemon.sh脚本

hbase-daemon.sh

  1. 该脚本的用法如下:
    这里写图片描述
    可以看出,command命令必须制定,以start-hbase.sh脚本中启动master为例
    hbase-daemon –config ${HBASE_CONFI_DIR} start master
    这里的command 就是start;而参数args就是master
  2. 执行$bin/hbase-config.sh和$bin/hbase-common.sh设置环境变量
  3. 设置调度的优先级
  4. 判断$startStop=$1的类型,做相应的操作,这里以start命令为例跟踪进去
    这里写图片描述
    在start的时候,首先做预处理操作,然后打印启动状态信息,然后使用nohup后台启动命令
    注意:在使用nohup启动的时候,命令再次运行了该脚本内容,只是这次将startStop的状态设置为 foreground_start,于是根据到case foreground_start选项中:
    这里写图片描述
    从红框中的源代码内容可以看到,最终的启动脚本都是调用/bin/hbase 命令来启动的

接下来分析下hbase-daemons.sh脚本的启动过程:

hbase-daemons.sh

  1. 执行$bin/hbase-config.sh 设置环境变量
  2. 执行在多个节点上批量启动服务的命令
    这里写图片描述
    从源代码中可以看出,该脚本最终调用hbase-daemon.sh脚本启动,实现批量在多个节点上启动服务
    hbase-daemon.sh脚本内容已经分析过,且知道,最用调用hbase的守护进程启动各个服务,下面来分析下hbase守护进程

hbase

  1. 运行$bin/hbase-config.sh,设置环境变量信息

  2. 判断是否运行在cygwin环境中 这里写图片描述

  3. 判断输入参数个数,如果为0,则给出使用说明帮助
    这里写图片描述

  4. 取出命令名称这里写图片描述,并设置或者重写重要的环境参数

  5. 根据命令参数,找到要运行的类,以启动master为例
    这里写图片描述

  6. 运行指定的类
    这里写图片描述

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

  1. 实例化了一个HMasterCommandLine对象,启动一个新的进程,调用startMaster()方法
  2. 如果是local模式,则转向LocalHBaseCluster,在同一个JVM里同时启动master和regionserver
  3. 否则仅仅启动master
版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

HBase集群启动脚本流程分析

在安装HBase的时候需要配置一些参数,这些参数在HBase启动的时候发挥着怎样的作用,如何影响的HBase的运行,出现启动错误时如何快速定位错误的位置。在解决这些问题之前,先从源码的角度分析一下HB...
  • ping_hu
  • ping_hu
  • 2017年07月30日 15:56
  • 278

hadoop 高可用集群一键启动脚本

  • 2017年11月03日 13:46
  • 442B
  • 下载

HadoopHA高可用集群启动脚本

  • 2017年07月07日 15:38
  • 251B
  • 下载

集群storm启动脚本

#!/bin/sh echo "#######################" echo "###" echo "## 这是storm的一键启动脚本" echo "##" echo "#######...

Redis集群快速启动脚本程序

这段时间在深入学习redis,从单机版到与sentinel模式再到集群模式,sentinel模式倒是不难,两三天时间足够掌握,但是集群模式可不是两三天可以掌握的,光看文档就得整整一天专心致志不分心的看...

Spark2.0.1 on yarn with hue 集群安装部署(九)启动脚本编写

启动脚本
  • dockj
  • dockj
  • 2016年11月28日 23:31
  • 375

HBASE启动脚本/Shell解析

转自:http://zjushch.iteye.com/blog/1736065 常用到的HBase启动脚本有:  1.$HBASE_HOME/bin/start-hbase.sh  启动整个集...
  • Code_lr
  • Code_lr
  • 2016年06月04日 09:45
  • 317

HBASE启动脚本/Shell解析

常用到的HBase启动脚本有: 1.$HBASE_HOME/bin/start-hbase.sh 启动整个集群 2.$HBASE_HOME/bin/stop-hbase.sh 停止整个...

Hbase启动脚本解析

常用到的HBase启动脚本有: 1.$HBASE_HOME/bin/start-hbase.sh 启动整个集群 2.$HBASE_HOME/bin/stop-hbase.sh 停止整个集群...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Hbase 集群启动脚本分析
举报原因:
原因补充:

(最多只允许输入30个字)