java对外接口开发实例_【开发案例】Yarn对外接口

本文详细介绍了YARN集群管理中的Command,包括ResourceManager、NodeManager的启动和管理,以及YARN Commands的使用。重点讲解了Superior Scheduler引擎提供的资源池、队列和应用程序的管理命令,如resourcepool、queue、application,展示了如何查看和操作资源状态、队列状态和应用详情。此外,还提到了REST API接口用于查询队列和资源池的状态。
摘要由CSDN通过智能技术生成

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和相关策略的相关状态以及配置信息。

66e057eb6aa49885a8199cb738727abf.png

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 命令

该命令输出决策相关信息。

b30a7c259a12fc501d11b72379866b6b.png

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 组件业务用户

3523798eef9963ce72cdd5c2dba53f56.png

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。单击“保存配置”,并勾选“重新启动受影响的服务或实例。”,单击“确定”,重启服务。

a18a8a14c30c848029ed68ab9012253f.png

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

资源选择表达式。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值