最近学习了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进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。