YARN Java API接口介绍
关于YARN的详细API可以直接参考官方网站上的描述:http://hadoop.apache.org/docs/r3.1.1/api/index.html
常用接口
YARN常用的Java类有如下几个。
- ApplicationClientProtocol
用于Client与ResourceManager之间。Client通过该协议可实现将应用程序提交到ResourceManager上,查询应用程序的运行状态或者中止应用程序等功能。
表1 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。
- ApplicationMasterProtocol
用于ApplicationMaster与ResourceManager之间。ApplicationMaster使用该协议向ResourceManager注册、申请资源、获取各个任务的运行情况等。
表2 ApplicationMasterProtocol常用方法 方法
说明
allocate(AllocateRequest request)
AM通过此接口提交资源分配申请。
finishApplicationMaster(FinishApplicationMasterRequest request)
AM通过此接口通知RM其运行成功或者失败。
registerApplicationMaster(RegisterApplicationMasterRequest request)
AM通过此接口向RM进行注册。
- ContainerManagementProtocol
用于ApplicationMaster与NodeManager之间。ApplicationMaster使用该协议要求NodeManager启动/中止Container或者查询Container的运行状态。
表3 ContainerManagementProtocol常用方法 方法
说明
getContainerStatuses(GetContainerStatusesRequest request)
AM通过此接口向NM请求Containers的当前状态信息。
startContainers(StartContainersRequest request)
AM通过此接口向NM提供需要启动的containers列表的请求。
stopContainers(StopContainersRequest request)
AM通过此接口请求NM停止一系列已分配的Containers。
样例代码
YARN作业提交的样例代码详细可以参考MapReduce开发指南中的MapReduce访问多组件样例代码,实现建立一个MapReduce job,并提交MapReduce作业到Hadoop集群。