最近學習了hbase的相關知識,也看了一下hbase的bin/目錄下的腳本,很多腳本細節并不理解,大致的輪廓有個了解,做一下學習總結:
."$bin"/hbase-config.sh 調用腳本hbase-config.sh 裝載相關環境變量,hbase-config.sh腳本同時調用了conf/hbase-env.sh腳本。
接下來腳本通過判斷是否為分布式模式來啟動不同的服務(同時調用了腳本hbase)
distMode=`$bin/hbase--config "$HBASE_CONF_DIR" org.apache.hadoop.hbase.util.HBa
seConfToolhbase.cluster.distributed | head -n 1`
if ["$distMode" == 'false' ]
then
"$bin"/hbase-daemon.sh --config"${HBASE_CONF_DIR}" start master //如果不是分布式模式,則只啟動master
else
"$bin"/hbase-daemons.sh --config"${HBASE_CONF_DIR}" start zookeeper
"$bin"/hbase-daemon.sh --config"${HBASE_CONF_DIR}" start master
"$bin"/hbase-daemons.sh --config"${HBASE_CONF_DIR}" \
--hosts "${HBASE_REGIONSERVERS}"start regionserver
"$bin"/hbase-daemons.sh --config"${HBASE_CONF_DIR}" \
--hosts "${HBASE_BACKUP_MASTERS}"start master-backup
fi
從上面腳本中可以看出,啟動master是調用腳本hbase-daemon.sh,而啟動zookeeper、regionserver、master-backup三個服務是調用了腳本hbase-daemons.sh;
同時也可以看出分布式模式下的各服務的啟動順序:
(zookeeper,master,regionserver,master-backup)
在hbase-daemons.sh腳本中可以看出啟動zookeeper,regionserver,master-backup三個服務的分別是調用了zookeepers.sh regionservers.sh master-backup.sh三個腳本;
case $command in
(zookeeper)
exec"$bin/zookeepers.sh" $args
;;
(master-backup)
exec"$bin/master-backup.sh" $args
;;
(*)
exec"$bin/regionservers.sh" $args
;;
esac
hbase停止服務非常簡單和直接,kill -0 `cat $pid`,查看腳本stop-hbase.sh
可以看出先調用了腳本hbase:
nohup nice -n ${HBASE_NICENESS:-0} "$HBASE_HOME"/bin/hbase\
--config"${HBASE_CONF_DIR}" \
master stop "$@"> "$logout" 2>&1 < /dev/null &
然后判斷是否為分布式模式,如果是,通過調用hbase-daemon.sh來停止master-backup和zookeeper服務
if [ "$distMode" == 'true' ]
then
# TODO: store backup mastersin ZooKeeper and have the primary send them a shu
tdown message
# stop any backup masters
"$bin"/hbase-daemons.sh --config "${HBASE_CONF_DIR}"\
--hosts "${HBASE_BACKUP_MASTERS}"stop master-backup
"$bin"/hbase-daemons.sh --config "${HBASE_CONF_DIR}"stop zookeeper
fi
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。