协议ApplicationClientProtocol
Hadoop-Yarn 源码阅读-Yarn
client与ResourceManager之间的协议,用来
- 提交、中止作业
- 获取应用信息、集群metrics信息、节点信息、队列信息和ACL信息
各接口说明:
- public GetNewApplicationResponse getNewApplication(GetNewApplicationRequest request) throws YarnException, IOException;
客户端使用该方法从ResourceManager获取一个新的ApplicationId以提交一个新的Application(后文使用缩写App)。ResourceManager(后文使用缩写RM)响应一个GetNewApplicationResponse类型的值,该值包含一个新的、递增的ApplicationId和集群最大可用资源等其他信息。
@param:request:要获得新ApplicationId的ApplicationRequest
@return:包含ApplicationId的GetNewApplicationRequest类型的值
- public SubmitApplicationResponse submitApplication(SubmitApplicationRequest request) throws YarnException, IOException;
客户端使用该接口向RM提交一个新的App。
客户端需要提供更多信息,比如队列;启动并运行ApplicationMaster的那个container的相关信息,包括:本地资源(二进制文件、jars、files等),安全令牌,环境变量和运行命令。
当前,当接受一个App提交,RM响应一个(空的)SubmitApplicationResponse;拒绝则抛出一个异常。调用该方法之后应该立即调用getApplicationReport(GetApplicationReportRequest)来确定App是否被正确得提交。
安全模式下,在接收App提交前,RM会检查客户端是否具有队列的访问权限。
@param:request:提交新App请求
@return:(空)接收提交的结果
@remark:当ResourceRequest超过配置的最低或最高资源边界,将抛出一个异常
- public KillApplicationResponse forceKillApplication(KillApplicationRequest request) throws YarnException, IOException;
客户端使用该方法来中止一个已提交的App。
客户端通过参数request中的ApplicationId成员指定需要中止的App。
安全模式下,在中止App前,RM会检查客户端是否具有App、队列的访问权限。
当前,当中止成功RM响应一个空响应;当拒绝中止,RM抛出一个异常。
@param:request:中止已提交App的请求
@return:如上述
- public GetApplicationReportResponse getApplicationReport(GetApplicationReportRequest request) throws YarnException, IOException;
客户端使用该方法从RM处获得一个App报告。
客户端通过在request中设置ApplicationId来指定想要获得报告的App。
安全模式下,在接受App报告请求前,RM检查客户端是否有App、队列的访问权限。
RM响应一个GetApplicationReportResponse类型的值,该值包含指定App的App报告。
如果用户没有VIEW_APP权限,以下字段将被设置成:
- tracking URL:"N/A"
- original tracking URL:"N/A"
- resource usage report:全为-1
@param:request:App报告的请求
@return:App报告
- public GetClusterMetricsResponse getClusterMetrics(GetClusterMetricsRequest request) throws YarnException, IOException;
客户端使用该方法从RM获得集群的metrics(度量)。
RM响应一个GetClusterMetricsResponse类型值,该值包含YarnClusterMetrics(包含更多信息,如集群中当前的节点数量)。
- public GetApplicationsResponse getApplications(GetApplicationsRequest request) throws YarnException, IOException;
客户端使用该方法从RM获得匹配request过滤条件的App报告。
该方法响应一个GetApplicationsResponse类型的值。GetApplicationsResponse类型包含ApplicationReport。
如果用户没有某个App的VIEW_APP访问权,会响应request描述的过滤过的回应。
- public GetClusterNodesResponse getClusterNodes(GetClusterNodesRequest request) throws YarnException, IOException;
客户端使用该方法从RM获得集群中所有节点信息。
- public GetQueueInfoResponse getQueueInfo(GetQueueInfoRequest request) throws YarnException, IOException;
客户端使用该方法从RM获得队列信息。
客户端通过设置GetQueueInfoRequest,可以请求类似used/total资源、子队列、正在运行的App等信息。
安全模式下,在响应队列信息之前,RM会校验客户端是否具有访问权限。
- public GetQueueUserAclsInfoResponse getQueueUserAcls(GetQueueUserAclsInfoRequest request) throws YarnException, IOException;
客户端使用该方法从RM获得队列ACL列表。
RM响应当前存在的所有队列的ACL。
- public GetDelegationTokenResponse getDelegationToken(GetDelegationTokenRequest request) throws YarnException, IOException;
客户端调用该方法获得授权的令牌,使container能够和使用对应授权令牌的服务通信。
RM响应可以让客户端与对应服务通信的授权令牌。
响应包含可以让container用来和ClientRMService(继承ApplicationClientProtocol)对话的令牌。
- public RenewDelegationTokenResponse renewDelegationToken(RenewDelegationTokenRequest request) throws YarnException, IOException;
更新一个已存在的授权令牌
@param:request:将被更新的授权令牌
@return:新授权令牌的失效时间
- public CancelDelegationTokenResponse cancelDelegationToken(CancelDelegationTokenRequest request) throws YarnException,IOException;
撤销一个已存在授权令牌。
@param:request:将要撤销的令牌
@return:空响应
+