您的位置:首页 > 运维架构 > Shell

HBASE启动脚本/Shell解析

2016-03-03 10:37 495 查看
常用到的HBase启动脚本有:

1.$HBASE_HOME/bin/start-hbase.sh

启动整个集群

2.$HBASE_HOME/bin/stop-hbase.sh

停止整个集群

3.$HBASE_HOME/bin/hbase-daemons.sh

启动或停止,所有的regionserver或zookeeper或backup-master

4.$HBASE_HOME/bin/hbase-daemon.sh

启动或停止,单个master或regionserver或zookeeper

以start-hbase.sh为起点,可以看看脚本间的一些调用关系

start-hbase.sh的流程如下:

1.运行hbase-config.sh(作用后面解释)

2.解析参数(0.96版本及以后才可以带唯一参数autorestart,作用就是重启)

3.调用hbase-daemon.sh来启动master;调用hbase-daemons.sh来启动regionserver zookeeper master-backup

hbase-config.sh的作用:

装载相关配置,如HBASE_HOME目录,conf目录,regionserver机器列表,JAVA_HOME目录等,它会调用$HBASE_HOME/conf/hbase-env.sh

hbase-env.sh的作用:

主要是配置JVM及其GC参数,还可以配置log目录及参数,配置是否需要hbase管理ZK,配置进程id目录等

hbase-daemons.sh的作用:

根据需要启动的进程,

如为zookeeper,则调用zookeepers.sh

如为regionserver,则调用regionservers.sh

如为master-backup,则调用master-backup.sh

zookeepers.sh的作用:

如果hbase-env.sh中的HBASE_MANAGES_ZK” = “true”,那么通过ZKServerTool这个类解析xml配置文件,获取ZK节点列表(即hbase.zookeeper.quorum的配置值),然后通过SSH向这些节点发送远程命令:

cd ${HBASE_HOME};
$bin/hbase-daemon.sh --config ${HBASE_CONF_DIR} start/stop zookeeper


regionservers.sh的作用:

与zookeepers.sh类似,通过${HBASE_CONF_DIR}/regionservers配置文件,获取regionserver机器列表,然后SSH向这些机器发送远程命令:

cd ${HBASE_HOME};
$bin/hbase-daemon.sh --config ${HBASE_CONF_DIR} start/stop regionserver


master-backup.sh的作用:

通过
${HBASE_CONF_DIR}/backup-masters
这个配置文件,获取backup-masters机器列表(默认配置中,这个配置文件并不存在,所以不会启动backup-master),然后SSH向这些机器发送远程命令:

cd ${HBASE_HOME};
$bin/hbase-daemon.sh --config ${HBASE_CONF_DIR} start/stop master --backup


hbase-daemon.sh的作用:

无论是zookeepers.sh还是regionservers.sh或是master-backup.sh,最终都会调用本地的hbase-daemon.sh,其执行过程如下:

1.运行hbase-config.sh,装载各种配置(java环境、log配置、进程ID目录等)

2.如果是start命令?

滚动out输出文件,滚动gc日志文件,日志文件中输出启动时间+ulimit -a信息,如

“Mon Nov 26 10:31:42 CST 2012 Starting master on dwxx.yy.taobao”

“..open files (-n) 65536..”

3.调用$HBASE_HOME/bin/hbase start master/regionserver/zookeeper

4.执行wait,等待3中开启的进程结束

5.执行cleanZNode,将regionserver在zk上登记的节点删除,这样做的目的是:在regionserver进程意外退出的情况下,可以免去3分钟的ZK心跳超时等待,直接由master进行宕机恢复

6.如果是stop命令?

根据进程ID,检查进程是否存在;调用kill命令,然后等待到进程不存在为止

7.如果是restart命令?

调用stop后,再调用start。。。

$HBASE_HOME/bin/hbase
的作用:

最终启动的实现由这个脚本执行

1.可以通过敲入
$HBASE_HOME/bin/hbase
查看其usage DBA TOOLS

shellrun the HBase shell
hbckrun the hbase ‘fsck’ tool
hlogwrite-ahead-log analyzer
hfilestore file analyzer
zkclirun the ZooKeeper shell
PROCESS MANAGEMENT

masterrun an HBase HMaster node
regionserverrun an HBase HRegionServer node
zookeeperrun a Zookeeper server
restrun an HBase REST server
thriftrun the HBase Thrift server
thrift2run the HBase Thrift2 server
avrorun an HBase Avro server
PACKAGE MANAGEMENT

classpath —- dump hbase CLASSPATH

version —- print the version

or

CLASSNAME —— run the class named CLASSNAME

2.bin/hbase shell,这个就是常用的shell工具,运维常用的DDL和DML都会通过此进行,其具体实现(对hbase的调用)是用ruby写的

3.bin/hbase hbck, 运维常用工具,检查集群的数据一致性状态,其执行是直接调用

org.apache.hadoop.hbase.util.HBaseFsck中的main函数

4.bin/hbase hlog, log分析工具,其执行是直接调用

org.apache.hadoop.hbase.regionserver.wal.HLogPrettyPrinter中的main函数

5.bin/hbase hfile, hfile分析工具,其执行是直接调用

org.apache.hadoop.hbase.io.hfile.HFile中的main函数

6.bin/hbase zkcli,查看/管理ZK的shell工具,很实用,经常用,比如你可以通过(get /hbase-tianwu-94/master)其得知当前的active master,可以通过(get /hbase-tianwu-94/root-region-server)得知当前root region所在的server,你也可以在测试中通过(delete /hbase-tianwu-94/rs/dwxx.yy.taobao),模拟regionserver与ZK断开连接,,,

其执行则是调用了org.apache.zookeeper.ZooKeeperMain的main函数

7.回归到刚才hbase-daemon.sh对此脚本的调用为:

$HBASE_HOME/bin/hbase start master/regionserver/zookeeper

其执行则直接调用

org.apache.hadoop.hbase.master.HMaster

org.apache.hadoop.hbase.regionserver.HRegionServer

org.apache.hadoop.hbase.zookeeper.HQuorumPeer

的main函数,而这些main函数就是了new一个了Runnable的HMaster/HRegionServer/QuorumPeer,在不停的Running…

8.bin/hbase classpath 打印classpath

9.bin/hbase version 打印hbase版本信息

10.bin/hbase CLASSNAME, 这个很实用,所有实现了main函数的类都可以通过这个脚本来运行,比如前面的hlog hfile hbck工具,实质是对这个接口的一个快捷调用,而其他未提供快捷方式的class我们也可以用这个接口调用,如Region merge 调用:

$HBASE_HOME/bin/hbase/org.apache.hadoop.hbase.util.Merge

脚本使用小结:

1.开启集群,start-hbase.sh

2.关闭集群,stop-hbase.sh

3.开启/关闭所有的regionserver、zookeeper,hbase-daemons.sh start/stop regionserver/zookeeper

4.开启/关闭单个regionserver、zookeeper,hbase-daemon.sh start/stop regionserver/zookeeper

5.开启/关闭master hbase-daemon.sh start/stop master, 是否成为active master取决于当前是否有active master

两个进阶脚本

6.rolling-restart.sh 可以用来挨个滚动重启

7.graceful_stop.sh move服务器上的所有region后,再stop/restart该服务器,可以用来进行版本的热升级

几个细节:

1。 hbase-daemon.sh start master 与 hbase-daemon.sh start master –backup,这2个命令的作用一样的,是否成为backup或active是由master的内部逻辑来控制的

2。stop-hbase.sh 不会调用hbase-daemons.sh stop regionserver 来关闭regionserver, 但是会调用hbase-daemons.sh stop zookeeper/master-backup来关闭zk和backup master,关闭regionserver实际调用的是hbaseAdmin的shutdown接口

3。通过
$HBASE_HOME/bin/hbase stop master
关闭的是整个集群而非单个master,只关闭单个master的话使用$HBASE_HOME/bin/hbase-daemon.sh stop master

4。
$HBASE_HOME/bin/hbase stop regionserver/zookeeper
不能这么调,调了也会出错,也没有路径会调用这个命令,但是可以通过
$HBASE_HOME/bin/hbase start regionserver/zookeeper
来启动rs或者zk,hbase-daemon.sh调用的就是这个命令
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: