HBASE啟動指令碼/Shell解析

來源:互聯網
上載者: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調用的就是這個命令 
相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.