HBASE啟動指令碼/Shell解析
最後更新:2018-07-24
來源:互聯網
上載者:User
常用到的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
shell run the HBase shell
hbck run the hbase 'fsck' tool
hlog write-ahead-log analyzer
hfile store file analyzer
zkcli run the ZooKeeper shell
PROCESS MANAGEMENT
master run an HBase HMaster node
regionserver run an HBase HRegionServer node
zookeeper run a Zookeeper server
rest run an HBase REST server
thrift run the HBase Thrift server
thrift2 run the HBase Thrift2 server
avro run 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調用的就是這個命令