在 YARN 中,Application 是指应用程序,它可能启动多个运行实例,每个运行实例由 —个 ApplicationMaster 与一组该 ApplicationMaster 启动的任务组成,它拥有名称、队列、优先级等属性,是一个比较宽泛的概念,可以是一个 MepReduce 作业、一个 DAG 应用程序等。YARN 中 Application 管理涉及应用程序的权限管理、启动与关闭、生命周期管理等,本节只介绍最基本的管理内容,比如权限管理、启动与关闭等,而生命周期管理则放到下一节中介绍。
一、ApplicationACLsManager
ApplicationACLsManager 负责管理应用程序访问权限
- 查看权限
- 程序基本信息:运行时间、优先级等
- 修改权限
- 修改程序优先级、杀死应用程序
二、RMAppManager
RMAppManager
负责应用程序启动和关闭。接下来结合源码主要分析启动和结束两个操作。
1、启动
在「4-1 ResourceManager 功能概述」中,提到了 ClientRMService
处理来自客户端各种 RPC 请求,比如提交、终止获取应用运行状态等。
ClientRMService
当收到客户端提交的应用后,将调用函数 RMAppManager#submitApplication
创建一个 RMApp
对象,维护应用程序的整个生命周期。
protected void submitApplication() {
// 创建 app,并添加到 RMActiveServiceContext.applications
RMAppImpl application =
createAndPopulateNewRMApp(s