zoukankan      html  css  js  c++  java
  • 2.【xhiveservice.sh】HIve集群启动脚本

    #! /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(){
        # 1 通过查看进程ps,获取pid
        ps_pid=$( ps -ef 2>/dev/null | grep -v grep | grep -i $1 | awk '{print $2}' );
    
        # 2 通过查看网络端口,获取pid
        netstat_pid=$( netstat -nltp 2>/dev/null | grep $2 | awk '{print $7}' | cut -d/ -f1 );
    
        # 3 输出状态
        # echo "===>>> 当前服务$1: ps -ef获取的pid=$ps_pid  ; netstat -nltp获取的pid=$netstat_pid";
    
        # 4 检查获取到的pid,判断服务是否启动,成功则返回0,否则返回1
        if [[ -n "$ps_pid" ]] && [[ -n "$netstat_pid" ]] && [[ "$ps_pid"="$netstat_pid" ]]
            then
                return 0
        else
            return 1
        fi
    }
    
    function hiveserver_start(){
        check_process HiveMetaStore 9083;
        ck_hivemetastore_result=$?;
        check_process HiveServer2 10000;
        ch_hiveserver2_result=$?;
        if [[ "$ck_hivemetastore_result" -eq "0" ]] && [[ "$ch_hiveserver2_result" -eq "0" ]]
            then
                echo "===>>> HiveMetaStore 服务已存在,无需再次启动"
                echo "===>>> HiveServer2 服务已存在,无需再次启动";
        else
            # 通过服务名获取进行pid,并杀死进程
            hivemetastore_pid=$( ps -ef | grep -v grep | grep -i HiveMetaStore | awk '{print $2}' );
            eval "kill -9 $hivemetastore_pid >/dev/null 2>&1";
            # 启动HiveMetaStore获取,并将输出写入日志文件
            log_filename="$HIVE_LOG_DIR/hivemetastore_$(date +%Y_%m_%d).log";
            eval "nohup hive --service metastore >> $log_filename 2>&1 &";
            echo "===>>> HiveMetaStore 服务已启动";
    
            hiveserver2_pid=$( ps -ef | grep -v grep | grep -i HiveServer2 | awk '{print $2}' );
            eval "kill -9 $hiveserver2_pid > /dev/null 2>&1";
            log_filename="$HIVE_LOG_DIR/hiveserver2_$(date +%Y_%m_%d).log";
            eval "nohup hive --service hiveserver2 >> $log_filename 2>&1 &";
            echo "===>>> HiveServer2 服务已启动";
        fi
    }
    
    
    function hiveserver_stop(){
        check_process HiveMetaStore 9083;
        ck_hivemetastore_result=$?;
        check_process HiveServer2 10000;
        ch_hiveserver2_result=$?;
        if [[ "$ck_hivemetastore_result" -eq "1" ]] && [[ "$ch_hiveserver2_result" -eq "1" ]]
            then
                echo "===>>> HiveMetaStore 服务已关闭,无需再次关闭"
                echo "===>>> HiveServer2 服务已关闭,无需再次关闭";
        else
            # 通过服务名获取进行pid,并杀死进程
            hivemetastore_pid=$( ps -ef | grep -v grep | grep -i HiveMetaStore | awk '{print $2}' );
            eval "kill -9 $hivemetastore_pid > /dev/null 2>&1";
            echo "===>>> HiveMetaStore 服务已关闭";
    
            hiveserver2_pid=$( ps -ef | grep -v grep | grep -i HiveServer2 | awk '{print $2}' );
            eval "kill -9 $hiveserver2_pid > /dev/null 2>&1";
            echo "===>>> HiveServer2 服务已关闭";
        fi
    }
    
    
    
    case $1 in
    "start")
        hiveserver_start;
    ;;
    "stop")
        hiveserver_stop;
    ;;
    "restart")
        hiveserver_stop;
        hiveserver_start;
    ;;
    "status")
        check_process HiveMetastore 9083 >/dev/null && echo "Metastore 服务运行正常" || echo "Metastore 服务运行异常";
        check_process HiveServer2 10000 >/dev/null && echo "HiveServer2 服务运行正常" || echo "HiveServer2 服务运行异常";
    ;;
    *)
        echo "Invalid Args!";
        echo "Usage: xhiveservice start|stop|restart|status";
    ;;
    esac
    
  • 相关阅读:
    vue-router嵌套路由,二级路由。
    HTTP与TCP的区别和联系
    使用fiddler模拟弱网环境
    冒泡排序-Python
    快速排序算法-Python
    python+selenium实现163邮箱登陆—iframe动态ID定位 及常用定位方法
    Linux常用命令
    Oracle ORA12514 监听程序当前无法识别连接描述符中请求的服务问题解决
    Linux环境Oracle数据库访问出现ORA-01034错误:oracle not available解决
    $props, $attrs,$listeners的具体使用例子
  • 原文地址:https://www.cnblogs.com/nuochengze/p/15417590.html
Copyright © 2011-2022 走看看