假设现在有flink任务在yarn上常态化运行,为了在任务失败时能重新运行,可以写一个定时脚本去监控
#!/bin/bash
yarn application -list -appStates RUNNING 2>/dev/null | grep application_ |grep Flink | awk '{print $1}' > yarn_running.txt
apps=$(cat yarn_monitor.txt)
running_app=`yarn application -list -appStates RUNNING 2>/dev/null | grep application_ | awk '{print $1}'`
echo apps=$apps
echo running_app=$running_app
#echo "---------------------定义空数组------------------------------"
declare -a curr_arr
curr_arr=()
index=0
#echo "---------------------遍历当前apps--------------------------"
for app in $running_app
do
if [[ "${apps[@]}" =~ "${app}" ]]; then
echo "app is running"
curr_arr[$index]=$item
let index+=1
else
echo "app is not running"
sh start.sh
fi
done
index=0
需要将你要监控的yarn applicationid 放到yarn_monitor.txt文件中,并且定义好如果app is not running时需要执行的脚本