#!/bin/sh
export HADOOP_HOME=/app/hadoop/bin
$HADOOP_HOME/yarn application -list -appStates RUNNING | awk '{print $1}' | grep -i "application" >appname.txt
curl http://10.116.100.11:8088/ws/v1/cluster/scheduler | jq . | sed 's/\"//g' > scheduler.json
sed -i '1,5d' scheduler.json 
sed -n -e :a -e '1,33!{P;N;D;};N;ba' scheduler.json > nscheduler.json
cat nscheduler.json | grep -i "queueName" | awk -F ": " '{print $2}' | awk -F "," '{print $1}' > qname.txt
cat nscheduler.json | grep -i "memory" | awk -F ": " '{print $2}' | awk -F "," '{print $1}' > memory.txt
line=$(cat memory.txt | wc -l)
for((j=2;j<$line;j=j+6))
do
  sed -n '$jp' memory.txt >> nmemory.txt  
done
app=($(cat appname.txt | awk '{print $1}'))
for (( i = 0 ; i < ${#app[@]} ; i++ ))
do
    #$HADOOP_HOME/yarn applicaiton -status ${app[$i]}
    queue=$(curl http://10.116.100.11:8088/ws/v1/cluster/apps/${app[$i]} | jq . | sed 's/\"//g'  | grep -i "queue" | awk -F ":" '{print $2}')
    allocatedMB=$(curl http://10.116.100.11:8088/ws/v1/cluster/apps/${app[$i]} | jq . | sed 's/\"//g'  | grep -i "allocatedMB" | awk -F ":" '{print $2}')
    echo ${app[$i]} ":" $queue ":" $allocatedMB
    nparr=($(cat nscheduler.json | grep -i "numPendingApps" | awk -F ": " '{print $2}' | awk -F "," '{print $1}'))
    for((j=0;j<=${#nparr[@]}))
    do
       if [${nparr[$j]} -gt 10 ]
       then
          qname=$(sed -n '$jp' qname.txt)
          mem=$(sed -n '$jp' nmemory.txt)
          if [ $qname -eq $queue ]
          then
                 rate=$(echo "sclae=2; $allocatedMB/$mem" | bc) 
                 if [ $rate -gt 0.5 ]
                 then
                    $HADOOP_HOME/yarn application  -kill  ${app[$i]}
                 fi
          fi
        fi 
    done
done
#查看任务的详细信息
curl http://10.116.100.11:8088/ws/v1/cluster/apps/application_1554987290796_688678
#查看任务状态
curl http://10.116.100.11:8088/ws/v1/cluster/apps/application_1409421698529_0012/state
#kill任务
curl -v -X PUT -d '{"state": "KILLED"}''http://10.116.100.11:8088/ws/v1/cluster/apps/application_1409421698529_0012'
#队列资源信息
curl http://10.116.100.11:8088/ws/v1/cluster/scheduler
#查看指定队列的所有任务:
curl http://10.116.100.11:8088/ws/v1/cluster/apps?queue=default
#查看整个集群的指标
curl http://10.116.100.11:8088/ws/v1/cluster/metrics
#查看队列的状态
yarn queue -status default
扫码关注我们
微信号:SRE实战
拒绝背锅 运筹帷幄