淄博网站推广公司那些,注册城乡规划师2021报考时间,网站服务器数据库,计算机软件开发专业学什么最终效果
定时检测hive运行状态#xff0c;进程不存在或者进程存在但是不监听端口的hiveserver2#xff0c;自动重新拉起每次检测脚本执行的日志都会保存在log目录下.check文件#xff0c;每一个月一个文件每月15日#xff0c;删除2月前的检测日志开启hive自带日志输出后进程不存在或者进程存在但是不监听端口的hiveserver2自动重新拉起每次检测脚本执行的日志都会保存在log目录下.check文件每一个月一个文件每月15日删除2月前的检测日志开启hive自带日志输出后日志不会删除且较大因此一并将过期的hive自带日志清空
https://blog.csdn.net/Brother_ning/article/details/127993943 从这个作者复制的但是他的代码好像有点问题修改后然后加以优化
定时检查脚本 vi $HIVE_HOME/hiveservice.sh #!/bin/bashHIVE_LOG_DIR$HIVE_HOME/log
CURRENT_TIME$(date %Y-%m-%d %H:%M:%S)
# 日志清理如果与hive默认日志命名风格一样也会自动清理hive的日志
DT$(date)
DT_2M$(date -d 2 month ago)
CHECK_LOG$HIVE_LOG_DIR/hive.log.$(date %Y-%m).check
CHECK_LOG_REG$HIVE_LOG_DIR/hive.log.$(date -d 2 month ago %Y-%m)-*
METASTORE_PORT9083
HIVESERVER2_PORT10000
# 最大连接数超过这个数则重启hive
MAX_WORKS1800
if [ ! -d $HIVE_LOG_DIR ]
thenmkdir -p $HIVE_LOG_DIR
ficheck_process(){WORKS$(netstat -anltp|grep $HIVESERVER2_PORT|wc -l)if [ $WORKS -gt $MAX_WORKS ]; thenecho $CURRENT_TIME:链接数异常,重启hive | tee -a $CHECK_LOGhive_stopsleep 5fipid$(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)if [ -n $pid ] [ -n $ppid ] [ $pid $ppid ]; thenecho $pidreturn 0 # 进程正在运行elsereturn 1 # 进程未运行fi
}hive_stop()
{metapid$(check_process HiveMetastore $METASTORE_PORT)if [ -n $metapid ]; thenecho $CURRENT_TIME:关闭Metastore进程 | tee -a $CHECK_LOG kill -9 $metapidfiserver2pid$(check_process HiveServer2 $HIVESERVER2_PORT)if [ -n $server2pid ]; thenecho $CURRENT_TIME:关闭server2进程 | tee -a $CHECK_LOG kill -9 $server2pidfi
}# wait方法不能随意使用必须在启动执行后才能执行。
wait_start()
{local max_retries100 # 设置最大重试次数 100次重启时间200秒如果200秒内没有启动成功则认为启动失败。local retries0 # 初始化重试计数器metapid$(check_process HiveMetastore $METASTORE_PORT)server2pid$(check_process HiveServer2 $HIVESERVER2_PORT)while { [ -z $metapid ] || [ -z $server2pid ]; } [ $retries -lt $max_retries ]; dosleep 2echo $(date %Y-%m-%d %H:%M:%S):启动中$retries。。。 | tee -a $CHECK_LOGmetapid$(check_process HiveMetastore $METASTORE_PORT)server2pid$(check_process HiveServer2 $HIVESERVER2_PORT)retries$((retries 1))done# 检查是否达到最大重试次数if [ $retries -ge $max_retries ]; thenecho $CURRENT_TIME:达到最大重试次数启动失败 | tee -a $CHECK_LOGexit 1 # 退出脚本表示启动失败elseecho $CURRENT_TIME:HIVE状态正常 | tee -a $CHECK_LOGfi
}kill_valid()
{PIDS$(jps -m | grep $1 | awk {print$1})# 遍历所有PID并使用kill -9命令杀掉它们防止hive挂掉但是进程不退出for PID in $PIDS; dokill -9 $PIDecho $CURRENT_TIME:kill无效的$1进程 $PID | tee -a $CHECK_LOGsleep 3done
}hive_start()
{metapid$(check_process HiveMetastore $METASTORE_PORT)if [ -z $metapid ]; thenkill_valid HiveMetaStoreecho $CURRENT_TIME:Metastore启动中 | tee -a $CHECK_LOGnohup hive --service metastore 2$HIVE_LOG_DIR/metastore.log 1/dev/null fiserver2pid$(check_process HiveServer2 $HIVESERVER2_PORT)if [ -z $server2pid ]; thenkill_valid HiveServer2echo $CURRENT_TIME:HiveServer2启动中 | tee -a $CHECK_LOGnohup hive --service hiveserver2 2$HIVE_LOG_DIR/hiveServer2.log 1/dev/null fi
}status()
{metapid$(check_process HiveMetastore $METASTORE_PORT)server2pid$(check_process HiveServer2 $HIVESERVER2_PORT)if [ -n $metapid ] [ -n $server2pid ]; thenecho $CURRENT_TIME:HIVE状态正常 | tee -a $CHECK_LOGelseif [ -z $metapid ]; thenecho $CURRENT_TIME:Metastore未运行 | tee -a $CHECK_LOGfiif [ -z $server2pid ]; thenecho $CURRENT_TIME:HiveServer2未运行 | tee -a $CHECK_LOGfifi
}clean()
{echo $CURRENT_TIME:清空日志 rm -rf $CHECK_LOG_REG | tee -a $CHECK_LOGrm -rf $CHECK_LOG_REG
}case $1 in
start)hive_startwait_start;;
stop)hive_stopstatus;;
restart)hive_stopsleep 3hive_startwait_start;;
status)status;;
clean)clean;;
*)echo Invalid Args!echo Usage: $(basename $0) start|stop|restart|status|clean;;
esac
定时调度 crontab -e 输入如下内容注意修改环境变量cron无法正常读取系统环境变量 #设置 HIVE_HOME 环境变量
HIVE_HOME/data/soft/hive-3.1.2
# 每隔10分钟执行一次状态检测有问题自动重启
*/10 * * * * sh $HIVE_HOME/hiveservice.sh start
# 每周天在0点01分执行一次 restart 任务
1 0 * * 0 sh $HIVE_HOME/hiveservice.sh restart $HIVE_HOME/log/cron.restart.log
# 每月15号清空2月前的hive日志
0 0 15 * * sh $HIVE_HOME/hiveservice.sh cleancrontab -l 检查crontab运行任务 tail -f /var/log/cron centos cat /var/log/syslog 乌班图