#!/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
SHELL脚本 获取yarn 任务运行时长,超过时间自动kill 并重新运行新的任务
最新推荐文章于 2023-11-09 12:20:43 发布