hive服务启停脚本

hive.sh

#!/bin/bash

HIVE_LOG_DIR=$HIVE_HOME/logs

# 创建日志目录
if [ ! -d $HIVE_LOG_DIR ]
then
	mkdir -p $HIVE_LOG_DIR
fi

# 检查进程是否运行正常,参数 1 为进程名,参数 2 为进程端口
function check_process()
{
	pid=$(ps -ef 2>/dev/null | grep -v grep | grep -i $1 | awk '{print $2}')
	ppid=$(netstat -nltp 2>/dev/null | grep $2 | awk '{print $7}' | cut -d '/' -f 1)
	echo $pid
	[[ "$pid" =~ "$ppid" ]] && [ "$ppid" ] && return 0 || return 1
}

# 启动服务
function hive_start()
{
	# 启动Metastore
	metapid=$(check_process HiveMetastore 9083)
	cmd="nohup $HIVE_HOME/bin/hive --service metastore >$HIVE_LOG_DIR/metastore.log 2>&1 &"
	[ -z "$metapid" ] && eval $cmd || echo -e "\033[47;36m Metastroe 服务已启动\033[0m"

	# 启动HiveServer2
	server2pid=$(check_process HiveServer2 10000)
	cmd="nohup $HIVE_HOME/bin/hiveserver2 >$HIVE_LOG_DIR/hiveServer2.log 2>&1 &"
	[ -z "$server2pid" ] && eval $cmd || echo -e "\033[47;36m HiveServer2 服务已启动\033[0m"
}

# 停止服务
function hive_stop()
{
	# 停止Metastore
	metapid=$(check_process HiveMetastore 9083)
	[ "$metapid" ] && kill $metapid || echo -e "\033[47;33m Metastore 服务未启动\033[0m"

	# 停止HiveServer2
	server2pid=$(check_process HiveServer2 10000)
	[ "$server2pid" ] && kill $server2pid || echo -e "\033[47;33m HiveServer2 服务未启动\033[0m"
}

# 脚本参数菜单
case $1 in
"start")
echo -e "\033[47;32m 服务启动中,HiveServer2启动时间较长,请等待!\033[0m"
hive_start
;;

"stop")
echo -e "\033[47;32m 服务停止中,请等待!\033[0m"
hive_stop
;;

"restart")
echo -e "\033[47;32m 服务重启中,HiveServer2启动时间较长,请等待!\033[0m"
hive_stop
sleep 2
hive_start
;;

"status")
check_process HiveMetastore 9083 >/dev/null && echo -e "\033[47;36m Metastore 服务运行正常\033[0m" || echo -e "\033[47;31m Metastore 服务运行异常\033[0m"
check_process HiveServer2 10000 >/dev/null && echo -e "\033[47;36m HiveServer2 服务运行正常\033[0m" || echo -e "\033[47;31m HiveServer2 服务运行异常\033[0m"
;;

*)
echo -e "\033[47;31m  Invalid Args!\033[0m"
echo 'Usage: '$(basename $0)' start|stop|restart|status'
;;
esac

添加执行权限

chmod 777 /home/hive.sh

你可能感兴趣的:(大数据,hive,大数据,hadoop)