更新时间:2024-10-23 GMT+08:00

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集群。