#!/bin/sh
#yarn job status:NEW、NEW_SAVING、SUBMITTED、ACCEPTED、RUNNING、FINISHED、FAILED、KILLED
nnum=$(xx/yarn application -list -appStates NEW | wc -l)
nsnum=$(xx/yarn application -list -appStates NEW_SAVING | wc -l)
snum=$(xx/yarn application -list -appStates SUBMITTED | wc -l)
anum=$(xx/yarn application -list -appStates ACCEPTED | wc -l)
rnum=$(/xx/yarn application -list -appStates RUNNING | wc -l)
finum=$(xx/yarn application -list -appStates FINISHED | wc -l)
fanum=$(xxx/yarn application -list -appStates FAILED | wc -l)
knum=$(xxx/yarn application -list -appStates KILLED | wc -l)
let nnum=nnum-2
let nsnum=nsnum-2
let snum=snum-2
let anum=anum-2
let rnum=rnum-2
let finum=finum-2
let fanum=fanum-2
let knum=knum-2
vnum=($nnum $nsnum $snum $anum $rnum $finum $fanum $knum)
vkey=(NEW NEW_SAVING SUBMITTED ACCEPTED RUNNING FINISHED FAILED KILLED)
url="http://xxx/monitor/report/sendReport"
#yarn applicaiton -status application_1554987290796_77895
for (( i = 0 ; i < ${#vnum[@]} ; i++ ))
do
for (( j = 0 ; j < ${#vkey[@]} ; j++ ))
do
if [ $i -eq $j ]
then
key="xx.yarn_job_state_"${vkey[$j]}"_count##xxx"
value=${vnum[$i]}
data="{\"key\":\"$key\",\"value\":$value}"
echo $data
cmd="curl -s -X POST -H 'Content-type':'application/json' -d '${data}' ${url}"
sh -c "$cmd"
fi
done
done
#!/bin/sh
ip=xxx
port=8088
export HADOOP_HOME=/app/hadoop/bin
rmstate1=$($HADOOP_HOME/yarn rmadmin -getServiceState rm1)
rmstate2=$($HADOOP_HOME/yarn rmadmin -getServiceState rm2)
if [[ $rmstate1 == *active* ]]
then
ip=xxx
fi
$HADOOP_HOME/yarn application -list -appStates RUNNING | awk '{print $1}' | grep -i "application" >appname.txt
curl http://$ip:$port/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 >> maxmemory.txt
done
app=($(cat appname.txt | awk '{print $1}'))
for (( i = 0 ; i < ${#app[@]} ; i++ ))
do
queue=$(curl http://$ip:$port/ws/v1/cluster/apps/${app[$i]} | jq . | sed 's/\"//g' | grep -i "queue" | awk -F ":" '{print $2}')
allocatedMB=$(curl http://$ip:$port/ws/v1/cluster/apps/${app[$i]} | jq . | sed 's/\"//g' | grep -i "allocatedMB" | awk -F ":" '{print $2}')
nparr=($(cat nscheduler.json | grep -i "numPendingApps" | awk -F ": " '{print $2}' | awk -F "," '{print $1}'))
for((j=0;j<=${#nparr[@]};j++))
do
if [${nparr[$j]} -gt 10 ]
then
qname=$(sed -n '$jp' qname.txt)
mem=$(sed -n '$jp' maxmemory.txt)
if [ $qname -eq $queue ]
then
rate=$(echo "sclae=2; $allocatedMB/$mem" | bc)
if [ $rate -gt 0.2 ]
then
$HADOOP_HOME/yarn application -kill ${app[$i]}
fi
fi
fi
done
done
#查看任务的详细信息
#$HADOOP_HOME/yarn applicaiton -status ${app[$i]}
curl http://$ip:$port/ws/v1/cluster/apps/application_1554987290796_688678
#查看任务状态
curl http://$ip:$port/ws/v1/cluster/apps/application_1409421698529_0012/state
#kill任务
curl -v -X PUT -d '{"state": "KILLED"}''http://$ip:$port/ws/v1/cluster/apps/application_1409421698529_0012'
#队列资源信息
curl http://$ip:$port/ws/v1/cluster/scheduler
#查看指定队列的所有任务:
curl http://$ip:$port/ws/v1/cluster/apps?queue=default
#查看整个集群的指标
curl http://$ip:$port/ws/v1/cluster/metrics
#查看队列的状态
yarn queue -status default