如何监控资源池使用情况
2019-05-06 本文已影响0人
爱拼才会赢Jack
因为Yarn资源池队列满了无法提前干预,所以基于CDH5.7版本开发python脚本,大部分原因可能都是个别MapReduce任务占用大部分资源。
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# author: chentujin
# funaction: get hadoop YARN ResourceManager App Running Status
import sys, json, os
import requests
import time, datetime
#yarn app status api interface
def get_yarn_status():
try:
url = "http://172.18.18.100:8088/ws/v1/cluster/scheduler"
header = {"Content-Type": "application/json"}
request = requests.get(url, headers=header)
if request.status_code == 200:
obj = json.loads(request.text)
return obj
else:
print(request.status_code)
return 'err'
except Exception as err:
print(err)
return 'err'
if __name__ == '__main__':
ret = get_yarn_status()
tmp = time.time()
log_time = time.strftime('%Y-%m-%d %H:%M', time.localtime(tmp))
if len(ret) > 0 and ret != 'err':
print("check ok.")
result = ret['scheduler']['schedulerInfo']['rootQueue']['childQueues']
for n in result:
queue_name = n['queueName'].split('.')[1]
used_memory = n['usedResources']['memory']
used_vcores = n['usedResources']['vCores']
max_memory = n['maxResources']['memory']
max_vcores = n['maxResources']['vCores']
if max_vcores == used_vcores or max_memory == used_memory:
print("ResourcePoll Full: queue %s cpu %s memory %s" %(queue_name,max_vcores,max_memory))