鉴于在网上找了个现成的脚本hive元数据和hiveserver2的启动脚本bug不断,脚本不全,老是启动失败,所以不在偷懒重新整理如下,亲测可正常运行。
#!/bin/bash
HIVE_LOG_DIR=$HIVE_HOME/logs
if [ ! -d $HIVE_LOG_DIR ]
then
mkdir -p $HIVE_LOG_DIR
fi
if [ $# -lt 1 ]
then
echo "Usage: $0{start|stop|status}"
exit
fi
case $1 in
start){
log_metastore="$HIVE_LOG_DIR/hivemetastore_$(date +%Y_%m_%d).log";
log_hiveserver2="$HIVE_LOG_DIR/hiveserver2_$(date +%Y_%m_%d).log";
echo "[info]------start metastore..."
metastore_id=$(ps -ef | grep -i metastore | grep -v 'grep' | awk '{print $2}')
if [ $metastore_id ];then
echo "[info]------metastore已经运行!"
else
nohup hive --service metastore -p 9083 >> $log_metastore 2>&1 &
echo "[info]------metastore启动成功啦!"
fi
sleep 3
echo "[info]------start hiveserver2..."
hiveserver2_id=$(ps -ef | grep -i hiveserver2 | grep -v 'grep' | awk '{print $2}')
if [ $hiveserver2_id ];then
echo "[info]------hiveserver2已经运行!"
else
nohup hiveserver2 >> $log_hiveserver2 2>&1 &
echo "[info]------hiveserver2启动成功啦!"
fi
};;
stop){
echo "[info]------stop metastore"
metastore_id=$(ps -ef | grep -i metastore | grep -v 'grep' | awk '{print $2}')
if [ $metastore_id ];then
kill -9 $metastore_id
k=$?
if [ $k -eq 0 ]; then
echo "[info]------metastore停止成功啦!"
else
echo "[info]------metastore停止失败啦!"
fi
else
echo "[info]------metastore没有运行!"
fi
sleep 3
echo "[info]------stop hiveserver2"
hiveserver2_id=$(ps -ef | grep -i hiveserver2 | grep -v 'grep' | awk '{print $2}')
if [ $hiveserver2_id ];then
kill -9 $hiveserver2_id
k=$?
if [ $k -eq 0 ];then
echo "[info]------hiveserver2停止成功啦!"
else
echo "[info]------hiveserver2停止失败啦!"
fi
else
echo "[info]------hiveserver2没有运行!"
fi
};;
status){
echo "[info]------check metastore status"
metastore_id=$(ps -ef | grep -i metastore | grep -v 'grep' | awk '{print $2}')
if [ $metastore_id ];then
echo "[info]------正在运行,进程号:$metastore_id"
else
echo "[info]------metastore没有运行!"
fi
echo "[info]------check hiveserver2 status"
hiveserver2_id=$(ps -ef | grep -i hiveserver2 | grep -v 'grep' | awk '{print $2}')
if [ $hiveserver2_id ];then
echo "[info]------正在运行,进程号:$hiveserver2_id"
else
echo "[info]------hiveserver2没有运行!"
fi
};;
*)
echo "Usage: $0{start|stop|status}"
exit
;;
esac
运行结果如下: