SHELL脚本 获取yarn 任务运行时长,超过时间自动kill 并重新运行新的任务

#!/bin/bash  
  
spark_task() {
/data_sata/module/spark-2.1.1/bin/spark-submit --master yarn --deploy-mode cluster --name IPQC6-1 \
--conf spark.port.maxRetries=200 \
--driver-cores 1 --driver-memory 2g \
--num-executors 2 --executor-cores 2 --executor-memory 2g \
--class com.casetek.ipqc.app.IPQC_RUN  \
--queue spa /data_sata/input/ipqc/IPQC6-1.jar
} 


# 设置YARN任务ID  
task_id="IPQC6-1" 
running="RUNNING"  
minute=10
ids=`yarn application -list | grep $task_id | awk '{print $1}' | grep application_ `

# 任务不为空 说明任务在运行  进行下一步判断  如果为空没有进程正常执行spark程序
if [ -n "$ids" ];then
# 获取任务状态  
result=$(yarn application -status $ids | awk 'NR==10' | awk -F ':' '{print $2}')  
echo "任务 $result "
   # 检查任务状态是否为"RUNNING"  
   if [ $result = $running ]; then  
   echo "任务 $task_id 正在运行..."  
   # 获取任务的开始运行时间  
   start_time=$(yarn application -status $ids | awk 'NR==7' | awk -F ':' '{print $2}')  
   current_time=$(date +%s)  
   starttime=$(date -d @$((start_time/1000)) +"%Y-%m-%d %H:%M:%S")  
   currenttime=$(date -d @$((current_time)) +"%Y-%m-%d %H:%M:%S")  
   time_c=$(((($current_time * 1000) - $start_time)/1000/60))  
     if [ $time_c -gt $minute ];then   
     echo "任务 $task_id 运行超$minute分钟任务杀掉重新执行..."  
     yarn application -kill $ids
     #任务kill 后重新执行任务
     spark_task
     else  
     echo "$ids 正常已运行$time_c分钟 开始运行时间: $starttime 当前时间:$currenttime "  
     fi  
   else  
   echo "任务 $ids 不是运行状态。 $status"
   fi
else
echo "进程不存在, 执行spark"
spark_task
fi 
  

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值