HBase - 1.0.1 학습 노트 (8) 시작 스 크 립 트 분석
아래 내용 은 주로 참고 하 였 다http://zjushch.iteye.com/blog/1736065고맙다
일반적인 스 크 립 트 는 다음 과 같 습 니 다:
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
5、$HBASE_HOME/bin/hbase
최종 시작 은 이 스 크 립 트 에서 실 행 됩 니 다.
일반적으로 start - hbase. sh 를 통 해 HBase 클 러 스 터 를 시작 합 니 다. 스 크 립 트 실행 절 차 는 다음 과 같 습 니 다.
#!/usr/bin/env bash
# $?
# $# shell
# $0 shell
# $1 shell
# $2 shell
# $@ shell
# Start hadoop hbase daemons.
# Run this on master node.
usage="Usage: start-hbase.sh"
bin=`dirname "${BASH_SOURCE-$0}"`
bin=`cd "$bin">/dev/null; pwd`
# 1、
. "$bin"/hbase-config.sh
# start hbase daemons
errCode=$? #
if [ $errCode -ne 0 ] #
then
exit $errCode
fi
# 2、 (0.96 autorestart, )
if [ "$1" = "autorestart" ] # start-hbase.sh ,
then
commandToRun="autorestart"
else
commandToRun="start"
fi
# HBASE-6504 - only take the first line of the output in case verbose gc is on
distMode=`$bin/hbase --config "$HBASE_CONF_DIR" org.apache.hadoop.hbase.util.HBaseConfTool
hbase.cluster.distributed | head -n 1`
# hbase ,hbase-site.xml
# 3、
if [ "$distMode" == 'false' ]
then
"$bin"/hbase-daemon.sh --config "${HBASE_CONF_DIR}" $commandToRun master $@
else
"$bin"/hbase-daemons.sh --config "${HBASE_CONF_DIR}" $commandToRun zookeeper
"$bin"/hbase-daemon.sh --config "${HBASE_CONF_DIR}" $commandToRun master
"$bin"/hbase-daemons.sh --config "${HBASE_CONF_DIR}" --hosts "${HBASE_REGIONSERVERS}" $commandToRun regionserver
"$bin"/hbase-daemons.sh --config "${HBASE_CONF_DIR}" --hosts "${HBASE_BACKUP_MASTERS}" $commandToRun master-backup
fi
hbase - config. sh 의 역할:
HBASE 와 같은 설정 불 러 오기HOME 디 렉 터 리, conf 디 렉 터 리 (HBASE CONF DIR), regionserver 기기 목록 (HBASE REGIONSERVERS), JAVAHOME 디 렉 터 리 및 HBASEBACKUP_MASTERS 기계 목록 에서 $HBASE 를 호출 합 니 다.HOME/conf/hbase-env.sh。
if [ -z "$HBASE_ENV_INIT" ] && [ -f "${HBASE_CONF_DIR}/hbase-env.sh" ]; then
. "${HBASE_CONF_DIR}/hbase-env.sh"
export HBASE_ENV_INIT="true"
fi
hbase - env. sh 의 역할:
주로 JVM 과 GC 인 자 를 설정 하고 log 디 렉 터 리 와 인 자 를 설정 할 수 있 으 며 hbase 관리 ZK 가 필요 한 지, 프로 세 스 id 디 렉 터 리 등 을 설정 할 수 있 습 니 다.
# export JAVA_HOME=/usr/sca_app/java/jdk1.7.0
# Where log files are stored. $HBASE_HOME/logs by default.
# export HBASE_LOG_DIR=${HBASE_HOME}/logs
# Tell HBase whether it should manage it's own instance of Zookeeper or not.
# export HBASE_MANAGES_ZK=true
hbase - daemons. sh 의 역할:
필요 에 따라 시작 하 는 프로 세 스 입 니 다.
# Run a hbase command on all slave hosts.
# Modelled after $HADOOP_HOME/bin/hadoop-daemons.sh
usage="Usage: hbase-daemons.sh [--config <hbase-confdir>] \
[--hosts regionserversfile] [start|stop] command args..."
# if no args specified, show usage
if [ $# -le 1 ]; then
echo $usage
exit 1
fi
bin=`dirname "${BASH_SOURCE-$0}"`
bin=`cd "$bin">/dev/null; pwd`
. $bin/hbase-config.sh
remote_cmd="cd ${HBASE_HOME}; $bin/hbase-daemon.sh --config ${HBASE_CONF_DIR} $@"
args="--hosts ${HBASE_REGIONSERVERS} --config ${HBASE_CONF_DIR} $remote_cmd"
command=$2
case $command in
(zookeeper)
exec "$bin/zookeepers.sh" $args
;;
(master-backup)
exec "$bin/master-backup.sh" $args
;;
(*)
exec "$bin/regionservers.sh" $args
;;
esac
zookeepers. sh 의 역할:
하면, 만약, 만약...MANAGES_ZK" = "true ", 그러면 ZKServerTool 과 같은 xml 프로필 을 분석 하여 ZK 노드 목록 (즉, hbase. zookeeper. quorum 의 설정 값) 을 가 져 온 다음 SSH 를 통 해 이 노드 에 원 격 명령 을 보 냅 니 다.
cd ${HBASE_HOME};
$bin/hbase-daemon.sh --config ${HBASE_CONF_DIR} start/stop zookeeper
if [ "$HBASE_MANAGES_ZK" = "true" ]; then
hosts=`"$bin"/hbase org.apache.hadoop.hbase.zookeeper.ZKServerTool | grep '^ZK host:' | sed 's,^ZK host:,,'`
cmd=$"${@// /\\ }"
for zookeeper in $hosts; do
ssh $HBASE_SSH_OPTS $zookeeper $cmd 2>&1 | sed "s/^/$zookeeper: /" &
if [ "$HBASE_SLAVE_SLEEP" != "" ]; then
sleep $HBASE_SLAVE_SLEEP
fi
done
fi
regionserver. sh 의 역할:
zookeepers. sh 와 유사 합 니 다. ${HBASE CONF DIR} / regionserver 설정 파일 을 통 해 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 든 regionserver. sh 든 master - backup. sh 든 최종 적 으로 로 컬 hbase - daemon. sh 를 호출 합 니 다. 그 실행 과정 은 다음 과 같 습 니 다.
1. hbase - config. sh 를 실행 하고 각종 설정 (자바 환경, 로그 설정, 프로 세 스 ID 디 렉 터 리 등) 을 불 러 옵 니 다.
2. 파일 의 실행 및 로그 출력 경 로 를 지정 합 니 다.
# get arguments
startStop=$1
JAVA=$JAVA_HOME/bin/java
export HBASE_LOG_PREFIX=hbase-$HBASE_IDENT_STRING-$command-$HOSTNAME
export HBASE_LOGFILE=$HBASE_LOG_PREFIX.log
if [ -z "${HBASE_ROOT_LOGGER}" ]; then
export HBASE_ROOT_LOGGER=${HBASE_ROOT_LOGGER:-"INFO,RFA"}
fi
if [ -z "${HBASE_SECURITY_LOGGER}" ]; then
export HBASE_SECURITY_LOGGER=${HBASE_SECURITY_LOGGER:-"INFO,RFAS"}
fi
logout=$HBASE_LOG_DIR/$HBASE_LOG_PREFIX.out
loggc=$HBASE_LOG_DIR/$HBASE_LOG_PREFIX.gc
loglog="${HBASE_LOG_DIR}/${HBASE_LOGFILE}"
pid=$HBASE_PID_DIR/hbase-$HBASE_IDENT_STRING-$command.pid
export HBASE_ZNODE_FILE=$HBASE_PID_DIR/hbase-$HBASE_IDENT_STRING-$command.znode
export HBASE_START_FILE=$HBASE_PID_DIR/hbase-$HBASE_IDENT_STRING-$command.autorestart
# hbase0.98
# thiscmd=$0, hbase-daemon.sh
# hbase1.0.1 ,
thiscmd="$bin/$(basename ${BASH_SOURCE-$0})"
args=$@
case $startStop in
(start)
check_before_start
hbase_rotate_log $logout
hbase_rotate_log $loggc
echo starting $command, logging to $logout
# internal_start hbase-daemon.sh
nohup $thiscmd --config "${HBASE_CONF_DIR}" internal_start $command $args < /dev/null > ${logout} 2>&1 &
sleep 1; head "${logout}"
;;
(autorestart)
check_before_start
hbase_rotate_log $logout
hbase_rotate_log $loggc
nohup $thiscmd --config "${HBASE_CONF_DIR}" internal_autorestart $command $args < /dev/null > ${logout} 2>&1 &
;;
(internal_start)
# Add to the command log file vital stats on our environment.
echo "`date` Starting $command on `hostname`" >> $loglog
echo "`ulimit -a`" >> $loglog 2>&1
nice -n $HBASE_NICENESS "$HBASE_HOME"/bin/hbase \
--config "${HBASE_CONF_DIR}" \
$command "$@" start >> "$logout" 2>&1 &
echo $! > $pid
wait
cleanZNode
;;
(internal_autorestart)
touch "$HBASE_START_FILE"
#keep starting the command until asked to stop. Reloop on software crash
while true
do
lastLaunchDate=`date +%s`
$thiscmd --config "${HBASE_CONF_DIR}" internal_start $command $args
#if the file does not exist it means that it was not stopped properly by the stop command
if [ ! -f "$HBASE_START_FILE" ]; then
exit 1
fi
#if the cluster is being stopped then do not restart it again.
zparent=`$bin/hbase org.apache.hadoop.hbase.util.HBaseConfTool zookeeper.znode.parent`
if [ "$zparent" == "null" ]; then zparent="/hbase"; fi
zkrunning=`$bin/hbase org.apache.hadoop.hbase.util.HBaseConfTool zookeeper.znode.state`
if [ "$zkrunning" == "null" ]; then zkrunning="running"; fi
zkFullRunning=$zparent/$zkrunning
$bin/hbase zkcli stat $zkFullRunning 2>&1 | grep "Node does not exist" 1>/dev/null 2>&1
#grep returns 0 if it found something, 1 otherwise
if [ $? -eq 0 ]; then
exit 1
fi
#If ZooKeeper cannot be found, then do not restart
$bin/hbase zkcli stat $zkFullRunning 2>&1 | grep Exception | grep ConnectionLoss 1>/dev/null 2>&1
if [ $? -eq 0 ]; then
exit 1
fi
#if it was launched less than 5 minutes ago, then wait for 5 minutes before starting it again.
curDate=`date +%s`
limitDate=`expr $lastLaunchDate + 300`
if [ $limitDate -gt $curDate ]; then
sleep 300
fi
done
;;
(stop)
rm -f "$HBASE_START_FILE"
if [ -f $pid ]; then
pidToKill=`cat $pid`
# kill -0 == see if the PID exists
if kill -0 $pidToKill > /dev/null 2>&1; then
echo -n stopping $command
echo "`date` Terminating $command" >> $loglog
kill $pidToKill > /dev/null 2>&1
waitForProcessEnd $pidToKill $command
else
retval=$?
echo no $command to stop because kill -0 of pid $pidToKill failed with status $retval
fi
else
echo no $command to stop because no pid file $pid
fi
rm -f $pid
;;
(restart)
# stop the command
$thiscmd --config "${HBASE_CONF_DIR}" stop $command $args &
wait_until_done $!
# wait a user-specified sleep period
sp=${HBASE_RESTART_SLEEP:-3}
if [ $sp -gt 0 ]; then
sleep $sp
fi
# start the command
$thiscmd --config "${HBASE_CONF_DIR}" start $command $args &
wait_until_done $!
;;
(*)
echo $usage
exit 1
;;
esac
3. start 명령 이 라면?
출력 파일 스크롤, gc 로그 파일 스크롤, 로그 파일 출력 시작 시간 + ulimit -정보
“Mon Nov 26 10:31:42 CST 2012 Starting master on dwxx.yy.taobao”
"..open files (-n) 65536.."
4. $HBASE 호출HOME/bin/hbase start master/regionserver/zookeeper
5. wait 를 실행 하고 3 에서 열 리 는 프로 세 스 가 끝 날 때 까지 기 다 립 니 다.
6. cleanZNode 를 실행 하고 regionserver 가 zk 에 등 록 된 노드 를 삭제 합 니 다. 이렇게 하 는 목적 은 regionserver 프로 세 스 가 예상 치 못 하 게 종료 되 었 을 때 3 분 동안 ZK 심장 박동 이 시간 을 초과 하지 않 고 master 에서 다운 되 는 것 입 니 다.
7. stop 명령 이 라면?
프로 세 스 ID 에 따라 프로 세 스 가 존재 하 는 지 확인 합 니 다.kill 명령 을 호출 하고 프로 세 스 가 존재 하지 않 을 때 까지 기 다 립 니 다.
8. restart 명령 이 라면?
stop 호출 후 start 호출...
$HBASE_HOME / bin / hbase 의 역할:
최종 시작 은 이 스 크 립 트 에서 실 행 됩 니 다.
1. $HBASE 입력 가능HOME / bin / hbase 사용 현황 확인
[mvtech2@cu-dmz3 bin]$ hbase
Usage: hbase [<options>] <command> [<args>]
Options:
--config DIR Configuration direction to use. Default: ./conf
--hosts HOSTS Override the list in 'regionservers' file
Commands:
Some commands take arguments. Pass no args or -h for usage.
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
upgrade Upgrade hbase
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
clean Run the HBase clean up script
classpath Dump hbase CLASSPATH
mapredcp Dump CLASSPATH entries required by mapreduce
version Print the version
CLASSNAME Run the class named CLASSNAME
2.bin/hbase 셸, 이것 이 바로 자주 사용 하 는 셸 도구 입 니 다. 운영 에 자주 사용 되 는 DDL 과 DML 은 모두 이 를 통 해 진행 되 며 구체 적 인 실현 (hbase 호출) 은 ruby 로 작 성 됩 니 다.
[mvtech2@cu-dmz3 bin]$ hbase shell
HBase Shell; enter 'help<RETURN>' for list of supported commands.
Type "exit<RETURN>" to leave the HBase Shell
Version 0.98.1-hadoop2, r1583035, Sat Mar 29 17:19:25 PDT 2014
hbase(main):001:0>
3.bin/hbase hbck
클 러 스 터 의 데이터 일치 성 상 태 를 확인 하 는 데 자주 사용 되 는 도 구 를 사용 합 니 다. org. apache. hadop. hbase. util. HBaseFsck 의 main 함 수 를 직접 조정 합 니 다.
4.bin/hbase hlog
log 분석 도 구 는 org. apache. hadop. hbase. wal. WALPretty Printer 의 main 함 수 를 직접 조정 합 니 다.
5.bin/hbase hfile
hfile 분석 도구 의 실행 은 org. apache. hadop. hbase. io. hfile. HFile Pretty Printer 의 main 함수 입 니 다.
6.bin/hbase zkcli
ZK 의 셸 도 구 를 보 거나 관리 합 니 다. org. apache. zookeeper. ZooKeeperMain 의 main 함 수 를 호출 했 습 니 다.
7.bin/hbase master、regionserver、zookeeper
$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 호출: $HBASEHOME/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. 한 지역 서버, zookeeper 를 켜 거나 닫 습 니 다.
hbase-daemon.sh start/stop regionserver/zookeeper
5. 마스터 열기 / 닫 기
hbase-daemon.sh start/stop master, active 가 될 지 여부 master 는 현재 active master 가 있 는 지 여부 에 달 려 있 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
ZSH에서 물고기까지ZSH는 수년 동안 내 기본 셸이었습니다. 이제 몇 달 동안 사용하면서 ZSH 구성에 대해 몇 가지 사항을 발견했습니다. 우리는 을 제공하는 시스템과 더 빨리 상호 작용하는 경향이 있습니다. 내.zshrc 구성에는 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.