2对外接口
2.1Command
您可以使用YARN
Commands对YARN集群进行一些操作,例如启动ResourceManager、提交应用程序、中止应用、查询节点状态、下载container日志等操作。
完整和详细的Command描述可以参考官网文档:http://hadoop.apache.org/docs/r2.7.2/hadoop-yarn/hadoop-yarn-site/YarnCommands.html。
常用Command
YARN Commands可同时供普通用户和管理员用户使用,它包含了少量普通用户可以执行的命令,比如jar、logs。而大部分只有管理员有权限使用。
用户可以通过以下命令查看YARN用法和帮助:
yarn --help
用法:进入Yarn客户端的任意目录,执行source命令导入环境变量,直接运行命令即可。
格式如下所示:
yarn [--config confdir]COMMAND
其中COMMAND可以为:
表2-1 常用Command描述
COMMAND
描述resourcemanager
运行一个ResourceManager。
备注:以omm用户执行服务端命令前需export环境变量,例如:
lexport
YARN_CONF_DIR=/opt/huawei/Bigdata/FusionInsight_HD_
V100R002C80SPC200/1_10_ResourceManager/etc
lexport
HADOOP_CONF_DIR=/opt/huawei/Bigdata/FusionInsight_HD
_V100R002C80SPC
200/1_10_ResourceManager/etc
nodemanager
运行一个NodeManager。
备注:以omm用户执行服务端命令前需export环境变量,例如:
lexport YARN_CONF_DIR=/opt/huawei/Bigdata/FusionInsight_HD_
V100R002C80SPC200/1_10_NodeManager/etc
lexport
HADOOP_CONF_DIR=/opt/huawei/Bigdata/FusionInsight_HD_
V100R002C80SPC200/1_10_NodeManager/etc
Rmadmin
管理员工具(动态更新信息)。
Version
打印版本信息。
jar
运行jar文件。
Logs
获取container日志。
classpath
打印获取Hadoop
JAR包和其他库文件所需的CLASSPATH路径。
daemonlog
获取或者设置服务LOG级别。
CLASSNAME
运行一个名字为CLASSNAME的类。
top
运行集群利用率监控工具。
Superior Scheduler
Command
Superior Scheduler引擎提供了输出Superior
Scheduler引擎具体信息的CLI。为了执行Superior命令,需要使用“/bin/superior”脚本。
以下为superior命令格式:
/bin/superior
Usage: superior [COMMAND | -help]
Where COMMAND is one of:
resourcepool
prints resource pool status
queue
prints queue status
application
prints application status
policy
prints policy status
不带参数调用大多数命令时会显示帮助信息。
lSuperior resourcepool命令:
该命令显示Resource
Pool和相关策略的相关状态以及配置信息。
Superior resourcepool命令仅用于管理员用户及拥有yarn管理权限的用户。
用法输出:
>superior resourcepool
Usage: resourcepool [-help]
[-list]
[-status ]
-help
prints resource pool usage
-list
prints all resource pool summary report
-status prints status and
configuration of specified
resource pool
−resourcepool -list以表格格式中显示Resource Pool摘要。示例如下:
> superior resourcepool -list
NAME NUMBER_MEMBER
TOTAL_RESOURCE
AVAILABLE_RESOURCE
Pool1
4
vcores 30,memory 1000 vcores 21,memory 80
Pool2
100
vcores 100,memory 12800 vcores 30,memory 1000
default
2
vcores 64,memory 128 vcores 40,memory 28
−resourcepool -status 以列表格式显示资源库详细信息。示例如下:
> superior resourcepool -status default
NAME: default
DESCRIPTION: System generated resource pool
TOTAL_RESOURCE: vcores 64,memory 128
AVAILABLE_RESOURCE: vcores 40,memory 28
NUMBER_MEMBER: 2
MEMBERS: node1,node2
CONFIGURATION:
|-- RESOURCE_SELECT:
|__RESOURCES:
lSuperior queue命令
该命令输出分层队列信息。
用法输出:
>superior queue
Usage: queue [-help]
[-list] [-e] [[-name ] [-r|-c]]
[-status ]
-c
only work with -name option. If this
option is used, command will print information of
specified
queue and its direct children.
-e
only work with -list or -list -name option. If
this option is used, command will print effective
state of specified queue and all of its
descendants.
-help
prints queue sub command usage
-list
prints queue summary report. This option can work
with -name and -r options.
-name print specified queue,
this can work with -r
option. By default, it will print queue's own
information. When -r is defined, command will
print all of its descendant queues. When -c is
defined, it will print its direct children queues.
-r
only work with -name option. If this
option is used, command will print information of
specified
queue and all of its descendants.
-status prints status of specified queue
−queue -list以表格格式输出队列摘要信息。命令将基于队列分层样式输出信息。用户可通过SUBMIT ACL或ADMIN ACL的队列权限查看队列。示例如下:
> superior queue -list
NAME
STATE
NRUN_APP NPEND_APP
NRUN_CONTAINER NPEND_REQUEST RES_INUSE
RES_REQUEST
root
OPEN|ACTIVE 10
20
100
200
vcores 100,memory 1000 vcores 200,memory 2000
root.Q1 OPEN|ACTIVE
5
10
50
100
vcores 50,memory 500 vcores 100,memory 1000
root.Q1.Q11 OPEN|ACTIVE
5
10
50
100
vcores 50,memory 500 vcores 100,memory 1000
root.Q1.Q12 CLOSE|INACTIVE
0
0
0
0
vcores 0,memory 0 vcores
0,memory 0
root.Q2 OPEN|INACTIVE
5
10
50
100
vcores 50,memory 500 vcores 100,memory 1000
root.Q2.Q21 OPEN|ACTIVE
5
10
50
100
vcores 50,memory 500 vcores 100,memory 1000
−queue -list -name root.Q1只输出root.Q1。
> superior queue -list -name root.Q1
NAME
STATE
NRUN_APP NPEND_APP
NRUN_CONTAINER NPEND_REQUEST
RES_INUSE
RES_REQUEST
root.Q1
OPEN|ACTIVE
5
10 50
100
vcores 50,memory 500 vcores 100,memory 1000
−queue -list -name root.Q1 -r将输出root.Q1及其所有的分支。
> superior queue -list -nameroot.Q1 -r
NAME
STATE
NRUN_APP NPEND_APP NRUN_CONTAINER
NPEND_REQUEST RES_INUSE
RES_REQUEST
root.Q1 OPEN|ACTIVE
5
10
50
100
vcores 50,memory 500 vcores 100,memory 1000
root.Q1.Q11 OPEN|ACTIVE
5
10
50
100 vcores
50,memory 500 vcores 100,memory 1000
root.Q1.Q12 CLOSE|INACTIVE
0
0
0
0
vcores 0,memory 0 vcores 0,memory 0
−queue -list -name root -c将会输出root及其直系子目录。
> superior queue -list -name root -c
NAME
STATE
NRUN_APP NPEND_APP NRUN_CONTAINER
NPEND_REQUEST
RES_INUSE
RES_REQUEST
root
OPEN|ACTIVE
10
20 100
200
vcores 100,memory 1000 vcores 200,memory 2000
root.Q1
OPEN|ACTIVE
5
10
50
100
vcores 50,memory 500 vcores 100,memory 1000
root.Q2 OPEN|INACTIVE
5
10
50
100
vcores 50,memory 500 vcores 100,memory 1000
−queue–status 将会输出具体队列状态和配置。
用户可通过SUBMIT ACL权限查看除队列ACL外的细节信息。
用户还可通过ADMIN ACL的队列权限查看包括ACL在内的队列细节信息。
> superior queue -status root.Q1
NAME: root.Q1
OPEN_STATE:CLOSED
ACTIVE_STATE: INACTIVE
EOPEN_STATE: CLOSED
EACTIVE_STATE: INACTIVE
LEAF_QUEUE: Yes
NUMBER_PENDING_APPLICATION: 100
NUMBER_RUNNING_APPLICATION: 10
NUMBER_PENDING_REQUEST: 10
NUMBER_RUNNING_CONTAINER: 10
NUMBER_RESERVED_CONTAINER: 0
RESOURCE_REQUEST: vcores 3,memory 3072
RESOURCE_INUSE: vcores 2,memory 2048
RESOURCE_RESERVED: vcores 0,memory 0
CONFIGURATION:
|-- DESCRIPTION: Spark session queue
|-- MAX_PENDING_APPLICATION: 10000
|--MAX_RUNNING_APPLICATION: 1000
|--ALLOCATION_ORDER_POLICY: FIFO
|--DEFAULT_RESOURCE_SELECT: label1
|--MAX_MASTER_SHARE: 10%
|--MAX_RUNNING_APPLICATION_PER_USER : -1
|--MAX_ALLOCATION_UNIT: vcores 32,memory 12800
|--ACL_USERS: user1,user2
|--ACL_USERGROUPS: usergroup1,usergroup2
|-- ACL_ADMINS: user1
|--ACL_ADMINGROUPS: usergroup1
lSuperior application命令
该命令输出应用相关信息。
用法输出:
>superior application
Usage: application [-help]
[-list]
[-status ]
-help
prints application sub command usage
-list
prints all application summary report
-status prints status of specified
application
用户可通过应用的浏览访问权限查看应用相关信息。
−application -list以表的形式提供所有应用的信息摘要:
> superior application -list
ID
QUEUE
USER
NRUN_CONTAINER
NPEND_REQUEST
NRSV_CONTAINER
RES_INUSE
RES_REQUEST
RES_RESERVED
application_1482743319705_0005
root.SEQ.queueB hbase
1
100
0
vcores 1,memory
1536
vcores 2000,memory 409600 vcores 0,memory 0
application_1482743319705_0006
root.SEQ.queueB hbase
0
1
0
vcores 0,memory
0
vcores 1,memory
1536 vcores
0,memory 0
−application -status 命令输出指定应用的详细信息。示例如下:
> superior application -status
application_1443067302606_0609
ID: application_1443067302606_0609
QUEUE: root.Q1.Q11
USER: cchen
RESOURCE_REQUEST: vcores 3,memory 3072
RESOURCE_INUSE: vcores 2,memory 2048
RESOURCE_RESERVED:vcores 1, memory 1024
NUMBER_RUNNING_CONTAINER: 2
NUMBER_PENDING_REQUEST: 3
NUMBER_RESERVED_CONTAINER: 1
MASTER_CONTAINER_ID: application_1443067302606_0609_01
MASTER_CONTAINER_RESOURCE: node1.domain.com
BLACKLIST: node5,node8
DEMANDS:
|-- PRIORITY: 20
|-- MASTER: true
|-- CAPABILITY: vcores 2, memory 2048
|-- COUNT: 1
|-- RESERVED_RES : vcores 1, memory 1024
|-- RELAXLOCALITY: true
|-- LOCALITY: node1/1
|-- RESOURCESELECT: label1
|-- PENDINGREASON: “application limit reached”
|-- ID: application_1443067302606_0609_03
|-- RESOURCE: node1.domain.com
|-- RESERVED_RES: vcores 1, memory 1024
|
|--PRIORITY: 1
|-- MASTER: false
|-- CAPABILITY: vcores 1,memory 1024
|-- COUNT: 2
|-- RESERVED_RES: vcores 0, memory 0
|-- RELAXLOCLITY: true
|--LOCALITY: node1/1,node2/1,rackA/2
|-- RESOURCESELECT: label1
|-- PENDINGREASON: “no available resource”
CONTAINERS:
|-- ID: application_1443067302606_0609_01
|-- RESOURCE: node1.domain.com
|-- CAPABILITY: vcores 1,memory 1024
|
|-- ID: application_1443067302606_0609_02
|-- RESOURCE: node2.domain.com
|-- CAPABILITY: vcores 1,memory 1024
lSuperior policy 命令
该命令输出决策相关信息。
Superior policy命令仅限管理员用户及拥有Yarn管理权限的用户使用。
用法输出:
>superior policy
Usage: policy [-help]
[-list
] [-u] [-detail]
[-status ]
-detail
only work with -list option to show a
summary information of resource pool
distribution on queues, including reserve,
minimum and maximum
-help
prints policy sub command usage
-list prints a summary
information of resource
pool distribution on queue
-status prints pool distribution
policy
configuration and status of specified
resource pool
-u
only work with -list option to show a
summary information of resource pool
distribution on queues and also user
accounts
−policy -list 输出队列分布信息摘要。示例如下:
>superior policy -list default
NAME: default
TOTAL_RESOURCE: vcores 16,memory 16384
AVAILABLE_RESOURCE: vcores 16,memory 16384
NAMERES_INUSERES_REQUEST
root.defaultvcores 0,memory 0vcores 0,memory 0
root.productionvcores 0,memory 0vcores 0,memory 0
root.production.BU1vcores 0,memory 0vcores 0,memory 0
root.production.BU2 vcores 0,memory 0vcores 0,memory 0
−policy -list -u输出用户级信息摘要。
> superior policy -list default -u
NAME: default
TOTAL_RESOURCE: vcores 16,memory 16384
AVAILABLE_RESOURCE: vcores 16,memory 16384
NAMERES_INUSERES_REQUEST
root.defaultvcores 0,memory 0vcores 0,memory 0
root.default.[_others_]vcores 0,memory 0vcores 0,memory 0
root.productionvcores 0,memory 0vcores 0,memory 0
root.production.BU1vcores 0,memory 0vcores 0,memory 0
root.production.BU1.[_others_]vcores 0,memory 0vcores 0,memory 0
root.production.BU2vcores 0,memory 0vcores 0,memory 0
root.production.BU2.[_others_]vcores 0,memory 0vcores 0,memory 0
−policy -status 输出指定资源库的策略详细资料。
> superior policy -status pool1
NAME: pool1
TOTAL_RESOURCE: vcores 64,memory 128
AVAILABLE_RESOURCE: vcores 40,memory 28
QUEUES:
|-- NAME: root.Q1
|-- RESOURCE_USE: vcores 20, memory 1000
|-- RESOURCE_REQUEST: vcores 2,memory 100
|--RESERVE: vcores 10, memory 4096
|--MINIMUM: vcore 11, memory 4096
|--MAXIMUM: vcores 500, memory 100000
|--CONFIGURATION:
|-- SHARE: 50%
|-- RESERVE: vcores 10, memory 4096
|-- MINIMUM: vcores 11, memory 4096
|-- MAXIMUM: vcores 500, memory 100000
|-- QUEUES:
|-- NAME: root.Q1.Q11
|-- RESOURCE_USE: vcores 15, memory, 500
|-- RESOURCE_REQUEST: vcores 1, memory 50
|-- RESERVE: vcores 0, memory 0
|-- MINIMUM: vcores 0, memory 0
|-- MAXIMUM: vcores -1, memory -1
|-- USER_ACCOUNTS:
|-- NAME: user1
|-- RESOURCE_USE: vcores 1, memory 10
|-- RESOURCE_REQUEST: vcores 1, memory 50
|
|-- NAME: OTHERS
|--RESOURCE_USE: vcores 0, memory 0
|- RESOURCE_REQUEST: vcores 0, memory 0
|-- CONFIGURATION:
|-- SHARE: 100%
|-- USER_POLICY:
|-- NAME: user1
|-- WEIGHT: 10
|
|-- NAME: OTHERS
|-- WEIGHT: 1
|-- MAXIMUM: vcores 10, memory 1000
2.2Java API
关于YARN的详细API可以直接参考官方网站上的描述:http://hadoop.apache.org/docs/r2.7.2/api/index.html
常用接口
YARN常用的Java类有如下几个。
lApplicationClientProtocol
用于Client与ResourceManager之间。Client通过该协议可实现将应用程序提交到ResourceManager上,查询应用程序的运行状态或者中止应用程序等功能。
表2-2 ApplicationClientProtocol常用方法
方法
说明forceKillApplication(KillApplicationRequest request)
Client通过此接口请求RM中止一个已提交的任务。
getApplicationAttemptReport(GetApplicationAttemptReportRequest
request)
Client通过此接口从RM获取指定ApplicationAttempt的报告信息。
getApplicationAttempts(GetApplicationAttemptsRequest
request)
Client通过此接口从RM获取所有ApplicationAttempt的报告信息。
getApplicationReport(GetApplicationReportRequest request)
Client通过此接口从RM获取某个应用的报告信息。
getApplications(GetApplicationsRequest request)
Client通过此接口从RM获取满足一定过滤条件的应用的报告信息。
getClusterMetrics(GetClusterMetricsRequest request)
Client通过此接口从RM获取集群的Metrics。
getClusterNodes(GetClusterNodesRequest request)
Client通过此接口从RM获取集群中的所有节点信息。
getContainerReport(GetContainerReportRequest request)
Client通过此接口从RM获取某个Container的报告信息。
getContainers(GetContainersRequest request)
Client通过此接口从RM获取某个ApplicationAttemp的所有Container的报告信息。
getDelegationToken(GetDelegationTokenRequest request)
Client通过此接口获取授权票据,用于container访问相应的service。
getNewApplication(GetNewApplicationRequest request)
Client通过此接口获取一个新的应用ID号,用于提交新的应用。
getQueueInfo(GetQueueInfoRequest request)
Client通过此接口从RM中获取队列的相关信息。
getQueueUserAcls(GetQueueUserAclsInfoRequest request)
Client通过此接口从RM中获取当前用户的队列访问权限信息。
moveApplicationAcrossQueues(MoveApplicationAcrossQueuesRequest
request)
移动一个应用到新的队列。
submitApplication(SubmitApplicationRequest request)
Client通过此接口提交一个新的应用到RM。
lApplicationMasterProtocol
用于ApplicationMaster与ResourceManager之间。ApplicationMaster使用该协议向ResourceManager注册、申请资源、获取各个任务的运行情况等。
表2-3 ApplicationMasterProtocol常用方法
方法
说明allocate(AllocateRequest request)
AM通过此接口提交资源分配申请。
finishApplicationMaster(FinishApplicationMasterRequest
request)
AM通过此接口通知RM其运行成功或者失败。
registerApplicationMaster(RegisterApplicationMasterRequest
request)
AM通过此接口向RM进行注册。
lContainerManagementProtocol
用于ApplicationMaster与NodeManager之间。ApplicationMaster使用该协议要求NodeManager启动/中止Container或者查询Container的运行状态。
表2-4 ContainerManagementProtocol常用方法
方法
说明getContainerStatuses(GetContainerStatusesRequest request)
AM通过此接口向NM请求Containers的当前状态信息。
startContainers(StartContainersRequest request)
AM通过此接口向NM提供需要启动的containers列表的请求。
stopContainers(StopContainersRequest request)
AM通过此接口请求NM停止一系列已分配的Containers。
1.1REST API
功能简介
通过HTTP REST
API来查看更多Yarn任务的信息。目前Yarn的REST接口只能进行一些资源或者任务的查询。完整和详细的接口请直接参考官网上的描述以了解其使用:http://hadoop.apache.org/docs/r2.7.2/hadoop-yarn/hadoop-yarn-site/WebServicesIntro.html
准备运行环境
1.在节点上安装客户端,例如安装到“/opt/client”目录,可参考“安装客户端”。
2.进入客户端安装目录“/opt/client”,执行下列命令初始化环境变量。
source bigdata_env
kinit 组件业务用户
kinit一次票据时效24小时。24小时后再次运行样例,需要重新kinit。
3.与HTTP服务访问相比,以HTTPS方式访问Yarn时,由于使用了SSL安全加密,需要确保Curl命令所支持的SSL协议在集群中已添加支持。若不支持,可对应修改集群中SSL协议。例如,若Curl仅支持TLSv1协议,修改方法如下:
登录FusionInsight
Manager页面,单击“服务管理 > Yarn >
服务配置”,在“参数类别”选择“全部配置”,在“搜索”框里搜索“hadoop.ssl.enabled.protocols”,查看参数值是否包含“TLSv1”,若不包含,则在配置项“hadoop.ssl.enabled.protocols”中追加“,TLSv1”。清空“ssl.server.exclude.cipher.list”配置项的值,否则以HTTPS访问不了Yarn。单击“保存配置”,并勾选“重新启动受影响的服务或实例。”,单击“确定”,重启服务。
TLSv1协议存在安全漏洞,请谨慎使用。
操作步骤
1.获取运行在Yarn上的任务的具体信息。
−命令:
curl -k -i --negotiate -u :
"https://10-120-85-2:26001/ws/v1/cluster/apps/"
其中10-120-85-2为ResourceManager主节点的hostname,26001为ResourceManager的端口号。
−用户能看到哪个队列的任务,要看这个用户是否有这个队列的admin权限,如何给用户赋予队列的admin权限,请参考FusionInsight产品文档中“创建Yarn角色”章节。
−运行结果:
{
"apps": {
"app": [
{
"id": "application_1461743120947_0001",
"user": "spark",
"name": "Spark-JDBCServer",
"queue": "default",
"state":
"RUNNING",
"finalStatus": "UNDEFINED",
"progress": 10,
"trackingUI": "ApplicationMaster",
"trackingUrl":
"https://10-120-85-2:26001/proxy/application_1461743120947_0001/",
"diagnostics":
"AM is launched. ",
"clusterId": 1461743120947,
"applicationType": "SPARK",
"applicationTags": "",
"startedTime": 1461804906260,
"finishedTime": 0,
"elapsedTime": 6888848,
"amContainerLogs":
"https://10-120-85-2:26010/node/containerlogs/container_e12_1461743120947_0001_01_000001/spark",
"amHostHttpAddress": "10-120-85-2:26010",
"allocatedMB": 1024,
"allocatedVCores": 1,
"runningContainers": 1,
"memorySeconds": 7053309,
"vcoreSeconds": 6887,
"preemptedResourceMB": 0,
"preemptedResourceVCores": 0,
"numNonAMContainerPreempted": 0,
"numAMContainerPreempted": 0,
"resourceRequests": [
{
"capability": {
"memory": 1024,
"virtualCores": 1
},
"nodeLabelExpression": "",
"numContainers": 0,
"priority": {
"priority": 0
},
"relaxLocality": true,
"resourceName": "*"
}
],
"logAggregationStatus": "NOT_START",
"amNodeLabelExpression": ""
},
{
"id": "application_1461722876897_0002",
"user": "admin",
"name": "QuasiMonteCarlo",
"queue": "default",
"state": "FINISHED",
"finalStatus":
"SUCCEEDED",
"progress": 100,
"trackingUI": "History",
"trackingUrl":
"https://10-120-85-2:26001/proxy/application_1461722876897_0002/",
"diagnostics": "Attempt recovered after RM restart",
"clusterId": 1461743120947,
"applicationType": "MAPREDUCE",
"applicationTags": "",
"startedTime": 1461741052993,
"finishedTime": 1461741079483,
"elapsedTime": 26490,
"amContainerLogs":
"https://10-120-85-2:26010/node/containerlogs/container_e11_1461722876897_0002_01_000001/admin",
"amHostHttpAddress": "10-120-85-2:26010",
"allocatedMB": -1,
"allocatedVCores": -1,
"runningContainers": -1,
"memorySeconds": 158664,
"vcoreSeconds": 52,
"preemptedResourceMB": 0,
"preemptedResourceVCores": 0,
"numNonAMContainerPreempted": 0,
"numAMContainerPreempted": 0,
"amNodeLabelExpression": ""
}
]
}
}
−结果分析:
通过这个接口,可以查询当前集群中Yarn上的任务,并且可以得到如下表2-5。
表1-1 常用信息
参数
参数描述user
运行这个任务的用户。
applicationType
例如MAPREDUCE或者SPARK等。
finalStatus
可以知道任务是成功还是失败。
elapsedTime
任务运行的时间。
2.获取Yarn资源的总体信息。
−命令:
curl -k -i --negotiate -u :
"https://10-120-85-102:26001/ws/v1/cluster/metrics"
−运行结果:
{
"clusterMetrics": {
"appsSubmitted": 2,
"appsCompleted": 1,
"appsPending": 0,
"appsRunning": 1,
"appsFailed": 0,
"appsKilled": 0,
"reservedMB": 0,
"availableMB": 23552,
"allocatedMB": 1024,
"reservedVirtualCores": 0,
"availableVirtualCores":
23,
"allocatedVirtualCores":
1,
"containersAllocated": 1,
"containersReserved": 0,
"containersPending": 0,
"totalMB": 24576,
"totalVirtualCores": 24,
"totalNodes": 3,
"lostNodes": 0,
"unhealthyNodes": 0,
"decommissionedNodes": 0,
"rebootedNodes": 0,
"activeNodes": 3,
"rmMainQueueSize": 0,
"schedulerQueueSize": 0,
"stateStoreQueueSize": 0
}
}
−结果分析:
通过这个接口,可以查询当前集群中如表2-6。
表1-2 常用信息
参数
参数描述appsSubmitted
已经提交的任务数。
appsCompleted
已经完成的任务数。
appsPending
正在挂起的任务数。
appsRunning
正在运行的任务数。
appsFailed
已经失败的任务数。
appsKilled
已经被kill的任务数。
totalMB
Yarn资源总的内存。
totalVirtualCores
Yarn资源总的VCore数。
1.2REST APIs of Superior Scheduler
功能简介
REST/HTTP是Superior
Scheduler在YARN资源管理器主机和YARN资源管理网络服务端口的一部分。通常以address:port as SS_REST_SERVER.的形式指示YARN。
下面使用HTTPS作为URL的一部分,并且只有HTTPS将得到支持。
Superior Scheduler接口
l查询Application
−查询scheduler engine中的所有application。
nURL
GET
https:///ws/v1/sscheduler/applications/list
n输入
无
n输出
JSON Response:
{
"applicationlist": [
{
"id": "1020201_0123_12",
"queue": "root.Q1.Q11",
"user": "cchen",
"resource_request": {
"vcores" : 10,
"memory" : 100
},
"resource_inuse": {
"vcores" : 100,
"memory" : 2000
},
"number_running_container": 100,
"number_pending_request": 10
},
{
"id": "1020201_0123_15",
"queue": "root.Q2.Q21",
"user": "Jason",
"resource_request": {
"vcores" : 4,
“memory” : 100
},
"resource_inuse": {
"vcores" : 20,
"memory" : 200
},
"resource_reserved": {
"vcores" : 10,
"memory" : 100
},
"number_running_container": 20,
"number_pending_container": 4,
"number_reserved_container":2
}
]
}
表1-3 all application参数
参数属性
参数类型
参数描述applicationlist
array
application ID数组。
queue
String
application队列名称。
user
String
提交application的用户名称。
resource_request
object
当前所需要的资源,包括vcores、内存等。
resource_inuse
object
当前所使用的资源,包括vcores、内存等。
resource_reserved
object
当前所预留的资源,包括vcores、内存等。
number_running_container
int
正在运行的container的总数。这反映了superior引擎的判定数量。
number_pending_request
int
挂起申请的总数。这是所有分配请求总和。
number_reserved_container
int
预留container的总数。这反映了superior引擎的判定数量。
id
String
application ID。
−查询scheduler engine中的单个application。
nURL
GET
https:///ws/v1/sscheduler/applications/{application_id}
n输入
无
n输出
JSON Response:
{
"applicationlist": [
{
"id": "1020201_0123_12",
"queue": "root.Q1.Q11",
"user": "cchen",
"resource_request": {
"vcores" : 3,
"memory" : 3072
},
"resource_inuse": {
"vcores" : 100,
"memory" : 2048
},
"number_running_container": 2,
"number_pending_request": 3,
"number_reserved_container":1
"master_container_id": 23402_3420842
"master_container_resource": node1.domain.com
"blacklist": [
{
"resource": "node5"
},
{
"resource": "node8"
}
],
"demand": [
{
"priority": 1,
"ismaster": true,
"capability": {
"vcores": 2,
"memory": 2048
},
"count": 1,
"relaxlocality": true,
"locality": [
{
"target": "node1",
"count": 1,
"strict": false
}
],
"resourceselect": "label1",
"pending_reason": "application limit
reached",
"reserved_resource": {
"vcores":1,
"memory":1024
},
"reservations":[
"id": "23402_3420878",
"resource": "node1.domain.com",
"reservedAmount": {
"vcores":1,
"memory":1024
}
]
},
{
"priority": 1,
"ismaster": false,
"capability": {
"vcores": 1,
"memory": 1024
},
"count": 2,
"relaxlocality": true,
"locality": [
{
"target": "node1",
"count": 1,
"strict": false
},
{
"target": "node2",
"count": 1,
"strict": false
},
{
"target": "rackA",
"count": 2,
"strict": false
},
],
"resourceselect": "label1",
"pending_reason": "no available resource"
}
],
"containers": [
{
"id": "23402_3420842",
"resource": "node1.domain.com",
"capability": {
"vcores": 1,
"memory": 1024
}
},
{
"id": "23402_3420853",
"resource": "node2.domain.com",
"capability": {
"vcores": 1,
"memory": 1024
}
}
]
}
}
n异常
未找到应用程序。
表1-4 single application参数
参数属性
参数类型
参数描述application
object
application对象。
id
String
application ID。
queue
String
application队列名称。
user
String
application的用户名称。
resource_request
object
当前所申请的资源,包括vcores、内存等。
resource_inuse
object
当前所使用的资源,包括vcores、内存等。
resource_reserved
object
当前所预留的资源,包括vcores、内存等。
number_running_container
int
正在运行的container的总数。这反映了superior引擎的判定数量。
number_pending_request
int
挂起申请的总数。这反映了superior引擎的判定数量。
number_reserved_container
int
预留container的总数。这反映了superior引擎的判定数量。
master_container_id
String
总containerID。
master_container_resource
String
运行的主container的主机名。
demand
array
demand对象数组。
priority
int
请求的优先级。
ismaster
boolean
判断是否为application
master需求。
capability
object
Capability对象。
vcores, memory, ..
int
数值可消耗资源属性,给该命令定义分配“单元”。
count
int
单元所需的数量。
relaxlocality
boolean
本地化需求优先,如果不能满足则不强制满足。
locality
object
本地化对象。
target
string
本地化目标的名称(即:节点1,框架1)。
count
int
资源“单元”数量与所需的本地需求。
strict
boolean
是否强制本地性。
resourceselect
String
application资源选择。
pending_reason
String
该application
pending的理由。
resource_reserved
object
当前需求的预留资源,包括vcores、内存等。
reservations
array
预留container对象的数组。
reservations:id
String
预留container的ID。
reservations:resource
String
container的分配地址。
reservations:reserveAmount
object
预留项的总数。
containers
array
分配container对象的数组。
containers:id
String
containerID。
containers:resource
String
container分配的位置。
containers:capability
object
Capability对象。
containers:vcores,memory…
int
分配给该container的可消耗数值型资源属性。
l查询Queue
−查询scheduler engine中的所有queue,包括叶子节点和所有中间队列。
nURL
GET
https:///ws/v1/sscheduler/queues/list
n输入
无
n输出
JSON Response:
{
"queuelist": [
{
"name": "root.default",
"eopen_state": "OPEN",
"eactive_state": "ACTIVE",
"open_state": "OPEN",
"active_state": "ACTIVE",
"number_pending_application": 2,
"number_running_application": 10,
"number_pending_request": 2,
"number_running_container": 10,
"number_reserved_container":1,
"resource_inuse" {
"vcores": 10,
"memory":
10240
},
"resource_request" {
"vcores": 2,
"memory": 2048
},
"resource_reserved" {
"vcores": 1
"memory": 1024
}
},
{
"name": "root.dev",
"eopen_state": "OPEN",
"eactive_state": "INACTIVE",
"open_state": "OPEN",
"active_state": "INACTIVE",
"number_pending_application": 2,
"number_running_application": 10,
"number_pending_request": 2,
"number_running_container": 10,
"number_reserved_container":0,
"resource_inuse" {
"vcores": 10,
"memory":
10240
},
"resource_request" {
"vcores": 2,
"memory": 2048
},
"resource_reserved" {
"vcores": 0
"memory": 0
}
},
{
"name": "root.qa",
"eopen_state" : "CLOSED",
"eactive_state" : "ACTIVE",
"open_state": "CLOSED",
"active_state": "ACTIVE",
"number_pending_application": 2,
"number_running_application": 10,
"number_pending_request": 2,
"number_running_container": 10,
"number_reserved_container":0,
"resource_inuse" {
"vcores": 10,
"memory":
10240
},
"resource_request" {
"vcores": 2,
"memory": 2048
},
"resource_reserved" {
"vcores": 1
"memory": 1024
}
},
]
}
表1-5 all queues参数
参数属性
参数类型
参数描述queuelist
array
队列名称列表。
name
String
队列名称。
open_state
String
队列的内在状态(自身状态)。表示队列的有效状态为OPEN或CLOSED。CLOSED状态的队列不接受任何新的allocation请求。
eopen_state
String
队列的外在状态(父队列状态)。有效状态为队列自身状态及其父队列状态的组合。CLOSED状态的队列不接受任何新的allocation请求。
active_state
String
队列的内在状态(自身状态)。表示队列的有效状态为ACTIVE或INACTIVE。INACTIVE状态的队列不能调度任何应用程序。
eactive_state
String
队列的外在状态(父队列状态)。有效状态为队列自身状态及其父队列状态的组合。INACTIVE状态的队列不能调度任何应用程序。
number_pending_application
int
挂起应用的总和。
number_running_application
int
正在运行应用的总和。
number_pending_request
int
挂起请求的总和。
number_running_container
int
正在运行container的总和。
numbert_reserved_container
int
预留container的总和。
resource_request
object
以vcores和内存等形式在队列中挂起的资源请求。
resource_inuse
object
以vcores和内存等形式在队列中使用的资源。
resource_reserved
object
以vcores和内存等形式在队列中预留的资源。
active_state
String
描述表示队列ACTIVE或INACTIVE状态。一个INACTIVE队列不能调度任何分配请求。
−查询scheduler engine中的单个queue,包括叶子节点和所有中间队列。
nURL
GET https:///ws/v1/sscheduler/queues/{queuename}
n输入
无
n输出
JSON Response:
{
"queue": {
"name": "root.default",
"eopen_state": "CLOSED",
"eactive_state": "INACTIVE",
"open_state": "CLOSED",
"active_state": "INACTIVE",
"leaf_queue" : yes,
"number_pending_application": 100,
"number_running_application": 10,
"number_pending_request": 10,
"number_running_container": 10,
"number_reserved_container:1,
"resource_inuse" {
"vcores": 10,
"memory":
10240
},
"resource_request" {
"vcores": 2,
"memory": 2048
},
"resource_reserved" {
"vcores": 1,
"memory": 1024
}
"configuration": {
"description": "Production spark queue",
"max_pending_application": 10000,
"max_running_application": 1000,
"allocation_order_policy":
"FIFO",
"default_resource_select":
"label1",
"max_master_share": 10%,
"max_running_application_per_user":
-1,
"max_allocation_unit": {
"vcores": 32,
"memory": 128000
},
"user_acl": [
{
"user":
"user1"
},
{
"group":
"group1"
}
],
"admin_acl": [
{
"user":
"user2"
},
{
"group":
"group2"
}
]
}
}
}
n异常
未找到队列。
表1-6 single queue参数
参数属性
参数类型
参数描述queue
object
队列对象。
name
String
队列名称。
description
String
队列描述。
open_state
String
队列的内在状态(自身状态)。表示队列的有效状态为OPEN或CLOSED。CLOSED状态的队列不接受任何新的allocation请求。
eopen_state
String
队列的外在状态(父队列状态)。有效状态为队列自身状态及其父队列状态的组合。CLOSED状态的队列不接受任何新的allocation请求。
active_state
String
队列的内在状态(自身状态)。表示队列的有效状态为ACTIVE或INACTIVE。INACTIVE状态的队列不能调度任何应用程序。
eactive_state
String
队列的外在状态(父队列状态)。有效状态为队列自身状态及其父队列状态的组合。INACTIVE状态的队列不能调度任何应用程序。
leaf_queue
boolean
表示队列是否在树节点或中间队列。表示叶子节点队列。
number_pending_application
int
当前的挂起请求数量。如果是中间队列/父队列,这是所有子队列的集合。
number_running_application
int
当前正在运行应用的数量。如果是中间队列/父队列,这是所有子队列的集合。
number_pending_request
int
挂起命令的数量;每个未完成命令的总计数。如果是中间队列/父队列,这是所有子队列的集合。
number_running_container
int
正在运行container的数量。如果是中间队列/父队列,这是所有子队列的集合。
number_reserved_container
int
预留container的数量。如果是中间队列/父队列,这是所有子队列的集合。
resource_request
object
以vcores和内存等形式在队列中挂起的资源请求。
resource_inuse
object
以vcores和内存等形式在队列中使用的资源。
resource_reserved
object
以vcores和内存等形式预留在队列中的资源。
configuration
object
队列配置目标。
max_pending_application
int
最大挂起应用数。如果是中间队列/父队列,这是所有子队列的集合。
max_running_application
int
最大运行应用数。如果是中间队列/父队列,这是所有子队列的集合。
allocation_order_policy
String
分配策略,可以使用FIFO原则,PRIORITY原则或者FAIR原则。
max_running_application_per_user
int
每个使用者运行应用的最大数量。
max_master_share
string
该队列共享的百分比。
max_allocation_unit
object
单个container允许的最大资源,该资源以vcores和内存等形式存在。
default_resource_select
String
缺省资源选择表达式。它被使用在当应用没有被指定一个提交区间值时。
user_acl
array
队列中被给予user权限的使用者。
admin_acl
array
该队列中被给予admin权限的使用者。
group
String
用户组名称。
user
String
用户名称。
l查询Resource Pool
−查询scheduler engine中所有resource pool。
nURL
GET
https:///ws/v1/sscheduler/resourcepools/list
n输入
无
n输出
JSON Response:
{
"resourcepool_list": [
{
"name": "pool1",
"description": "resource pool for
crc",
"number_member": 5,
"members": [
{
"resource":
"node1"
},
{
"resource":
"node2"
},
{
"resource":
"node3"
},
{
"resource":
"node4"
},
{
"resource":
"node5"
}
],
"available_resource": {
"vcores": 60,
"memory": 60000
},
"total_resource": {
"vcores": 100,
"memory": 128000
},
"configuration": {
"resources": [
{
"resource": "node1"
},
{
"resource": "node[2-5]"
}
],
"resource_select":
"label1"
}
},
{
"name": "pool2",
"description": "resource pool for
erc",
"number_member": 4
"members": [
{
"resource":
"node6"
},
{
"resource":
"node7"
},
{
"resource":
"node8"
},
{
"resource":
"node9"
}
],
"available_resource": {
"vcores": 56,
"memory": 48000
},
"total_resource": {
"vcores": 100,
"memory": 128000
},
"configuration": {
"resources": [
{
"resource": "node6"
},
{
"resource": "node[7-9]"
}
],
"resource_select":
"label1"
}
},
{
"name": "default",
"description":
"system-generated",
"number_member": 1,
"members": [
{
"resource":
"node0"
}
],
"available_resource": {
"vcores": 8,
"memory": 8192
},
"total_resource": {
"vcores": 16,
"memory": 12800
}
}
]
}
表1-7 all resource pools参数
参数属性
参数类型
参数描述resourcepool_list
array
resource pool对象数组。
name
String
resource pool名称。
number_member
int
resource pool成员数量。
description
String
resource pool描述。
members
array
当前resource
pool成员的资源名称数组。
resource
String
资源名称。
available_resource
object
该resource
pool中当前可使用的资源。
vcores, memory, ..
int
可消耗数值型资源属性,当前resource
pool中可用资源的属性,该属性的值以数字表示。
total_resource
object
该resource
pool所有资源。
vcores, memory, ..
int
可消耗数值型资源属性,当前resource
pool中总资源的属性,该属性的值以数字表示。
configuration
object
配置目标。
resources
array
所配置的资源名称pattern数组。
resource
String
资源名称模式。
resource_select
String
资源选择表达式。
−查询scheduler engine中单个resource pool
nURL
GET
https:///ws/v1/sscheduler/resourcepools/{resourcepoolname}
n输入
无
n输出
JSON Response:
{
"resourcepool": {
"name": "pool1",
"description": "resource pool for crc",
"number_member": 5
"members": [
{
"resource":
"node1"
},
{
"resource":
"node2"
},
{
"resource":
"node3"
},
{
"resource":
"node4"
},
{
"resource":
"node5"
}
],
"available_resource": {
"vcores": 60,
"memory": 60000
},
"total_resource": {
"vcores": 100,
"memory": 128000
},
"configuration": {
"resources": [
{
"resource":
"node6"
},
{
"resource":
"node[7-9]"
}
],
"resource_select": "label1"
}
}
}
n异常
未找到resource
pool。
表1-8 single resource pool参数
参数属性
参数类型
参数描述resourcepool
object
resource pool对象。
name
String
resource pool名称。
description
String
resource pool描述。
number_member
int
resource pool成员数量。
members
array
该resource
pool现任成员的资源名称数组。
resource
String
资源名称。
available_resource
object
该resource
pool当前可用资源。
vcores, memory, ..
int
可消耗数值型资源属性,当前resource
pool中可用资源的属性,该属性的值以数字表示。
total_resource
object
该resource
pool中所有资源。
vcores, memory, ..
int
可消耗数值型资源属性,当前resource
pool中总资源的属性,该属性的值以数字表示。
configuration
object
配置目标。
resources
array
所配置的资源名称pattern数组。
resource
String
资源名称模式。
resource_select
String
资源选择表达式。