创建启动服务尽量在根目录下单独建文件夹命名为star-all.sh
我是在这里创建的
[root@single ~]# cd shell/sample/
[root@single sample]# ll
-rwxr--r--. 1 root root 1278 Nov 26 17:30 start-all.sh
创建完成后vi start-all.sh进入编辑页面编写脚本
#!/bin/bash
//脚本首行
HB="hbase HMaster HRegionServer start-hbase.sh"
//hbase的所有启动服务名称及启动命令
ZK="zookeeper QuorumPeerMain zkServer.sh_start"
//zookeeper的所有启动服务名称及启动命令
HV="hive RunJar RunJar nohup_hive_--service_?>~/hive2.log_2>&1_&"
//hive的所有启动服务名称及启动命令
YN="yarn NodeManager ResourceManager start-yarn.sh"
//yarn的所有启动服务名称及启动命令
HD="dfs DataNode NameNode SecondaryNameNode start-dfs.sh"
//hdfs的所有启动服务名称及启动命令
这部分主要是检服务是否启动
function checkStart(){
COUNT=0
ARR=$@
ARR=($ARR)
SIZE=$(($#-2))
for i in `seq 1 $SIZE`
do
V=`jps|grep ${ARR[$i]}`
if [ "$V" ]
then
if [ $1 == "hive" ]
then
V=($V)
COUNT=$((${#V[*]}/2))
break
else
((COUNT++))
fi
fi
done
if [ $COUNT -eq $SIZE ]
then
echo "start $1 successfully"
else
echo "fail to start $1"
echo "fail to execute start-all.sh ... please check reason and retry again"
exit 1
fi
}
这部分是启动服务
function start(){
ARR=$@
ARR=($ARR)
echo "start $1 ..."
OUTPUT=${ARR[$#-1]}
OUTPUT="${OUTPUT//_/ }"
if [[ $OUTPUT =~ ^nohup ]]
then
eval ${OUTPUT/\?/metastore}
sleep 5s
eval ${OUTPUT/\?/hiveserver2}
sleep 6s
else
OUTPUT=`$OUTPUT`
fi
checkStart $@
}
启动
//调用HD启动命令
start $HD
//调用YN启动命令
start $YN
//调用HV启动命令
start $HV
//调用ZK启动命令
start $ZK
//调用HB启动命令
start $HB