Yarn RestApi

本文记录自己在工作学习期间使用Yarn rest api的一些记录

Yarn rest api 介绍

获取所有的application id

Url的地址

http:///ws/v1/cluster/apps
参考地址:https://hadoop.apache.org/docs/current/hadoop-yarn/hadoop-yarn-site/ResourceManagerRest.html#Cluster_Applications_API

参数

可以提供的参数

参数名 参数意义
states 限制application的状态
finalStatus 限制最终状态,如:UNDEFINED
user 用户名
queue 所使用的队列
limit 限制返回的数量
startedTimeBegin 与startedTimeEnd配合限制application的start的时间
startedTimeEnd 与startedTimeBegin配合限制application的start的时间
finishedTimeBegin 与finishedTimeEnd配合限制application的完成时间
finishedTimeEnd 与finishedTimeBegin配合限制application的完成时间
applicationTypes 限制application的类型,如SPARK
applicationTags 不知道
deSelects 不知道

Python实现

需要导入requests

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
import requests
def queryApplications(host, port, p):
url = 'http://%s:%s/ws/v1/cluster/apps' % (host, port)
reponse = requests.get(url, params=p)
#print reponse.url
apps = json.loads(reponse.text)
if apps:
return apps.get("apps", {})
else:
return None
if "__main__" == __name__:
host = 'yarn.host.com'
port = 8088
params = {}
params['startedTimeBegin'] = changeTimeToNumber(changeStrToTime(getHourBegin()))
params['startedTimeEnd'] = changeTimeToNumber(changeStrToTime(getHourEnd())) * 1000
params['applicationTypes'] = ['SPARK']
apps = queryApplications(host, port, params)

返回值

返回在此Yarn调度过的applicaiton列表

获取单个Application的信息

Url的地址

http:///ws/v1/cluster/apps/{appid}
参考地址:https://hadoop.apache.org/docs/current/hadoop-yarn/hadoop-yarn-site/ResourceManagerRest.html#Cluster_Application_API

参数

没有参数

Python实现

1
2
3
4
5
6
7
8
9
10
11
12
13
import requests
def queryApplication(appid, host, port):
url = 'http://%s:%s/ws/v1/cluster/apps/%s' % (host, port, appid)
reponse = requests.get(url)
#print reponse.url
res = json.loads(reponse.text)
return res
if "__main__" == __name__:
host = 'yarn.host.com'
port = 8088
app = queryApplication('application_1476912658570_0002', host, port)

返回值

返回application的详细信息,可以参考URL处提供的地址