Hive相关服务启动脚本
-
背景
-
在使用beeline 客户端通过JDBC方式访问Hive时,需要确保metastore以及hiveserver2服务的启动。因此有必要存在一个脚本对此进行管理,提高效率。
-
脚本如下文所见,可通过start|stop|restart|status四个参数进行服务管理。
hiveserver2服务启动时间较长,需耐心等待一会再查看启动状态
-
-
脚本
#!/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 --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 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