通过访问 YARN 的 API 来获取队列信息

主机上需要安装 jq 用来解析 json 串

访问 API,获取 json 数据

curl -s --negotiate -u :  "$rm:8088/ws/v1/cluster/scheduler"

通过 jq 命令来解析队列部分的数据

queue_json=`echo $queue_json|jq '.scheduler.schedulerInfo.queues'`

获取队列总数量

queue_json_size=`echo $queue_json|jq '.queue[]|.queueName'|wc -l`

根据总数来遍历数据,得到每个队列的信息

for((j=0;j<$queue_json_size;j++))
    do
      queue_name=`echo $queue_json|jq ".queue[$j].queueName"|sed 's/\"//g'`
      #echo $queue_name
      vcore_total=`echo $queue_json|jq ".queue[$j].maxEffectiveCapacity.vCores"`
      vcore_used=`echo $queue_json|jq ".queue[$j].resourcesUsed.vCores"`
      vcore_avali=`expr $vcore_total-$vcore_used|bc`
      vcore_used_rate=$([ $vcore_total == 0 ] && echo 0 || echo "$vcore_used $vcore_total"| awk '{printf "%.2f",$1/$2*100}')
      mem_total=`echo $queue_json|jq ".queue[$j].maxEffectiveCapacity.memory"`
      mem_used=`echo $queue_json|jq ".queue[$j].resourcesUsed.memory"`
      mem_avali=`expr $mem_total-$mem_used|bc`
      mem_used_rate=$([ $mem_total == 0 ] && echo 0 || echo "$mem_used $mem_total"| awk '{printf "%.2f",$1/$2*100}')
      app_submitted=`echo $queue_json|jq ".queue[$j].numApplications"`
      app_running=`echo $queue_json|jq ".queue[$j].numActiveApplications"`
      app_completed=`echo $queue_json|jq ".queue[$j].numPendingApplications"`
    done

根据 需要将数据推出去,或者写入数据库

 

脚本弊端:目前只支持两个层级的队列,脚本还需要优化

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值