首页IT科技yarn架构中包括哪些(【深入浅出 Yarn 架构与实现】4-4 RM 管理 Application)

yarn架构中包括哪些(【深入浅出 Yarn 架构与实现】4-4 RM 管理 Application)

时间2025-06-21 00:57:11分类IT科技浏览4384
导读:在 YARN 中,Application 是指应用程序,它可能启动多个运行实例,每个运行实例由 —个 ApplicationMaster 与一组该 ApplicationMaster 启动的任务组成,它拥有名称、队列、优先级等属性,是一个比较宽泛的概念,可以是一个 MepReduce 作业、一个 DAG 应用程序等。YARN 中...

在 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(submissionContext, submitTime, user, false); // 发送 app start event                   ,继续由其他事件处理器处理 this.rmContext.getDispatcher().getEventHandler() .handle(new RMAppEvent(applicationId, RMAppEventType.START)); } 2、结束

当 RMAPP 运行结束后      ,将向 RMAPPManager 发送一个 RMAPPManagerEventType.APP_COMPLETED 事件       。看源码将执行 3 个操作:

public void handle(RMAppManagerEvent event) { ApplicationId applicationId = event.getApplicationId(); LOG.debug("RMAppManager processing event for " + applicationId + " of type " + event.getType()); switch(event.getType()) { case APP_COMPLETED: { finishApplication(applicationId); logApplicationSummary(applicationId); checkAppNumCompletedLimit(); } finishApplication() 将 Application 放入到内存的已完成列表 completedApps 中             ,用户可查询历史应用执行信息(如 yarn web)                    。 logApplicationSummary() 打印日志信息            。 checkAppNumCompletedLimit() 上面提到的 completedApps 列表容量有限                   ,默认 10000      ,可修改。超过该值时       ,将从在这里被移除                   ,后续可从 History Server 中进行查看                    。 将应用程序从 RMStateStore 中移除                   。RMStateStore 记录了运行中的应用程序的运行日志            ,当集群故障重启后       ,RM 可通过这些日志恢复应用程序运行状态                    ,从而避免全部重新运行            ,一旦应用程序运行结束后,这些日志便失去了意义                    , 故可以对其进行删除。

三             、ContainerAllocationExpirer

当 AM 获得 Container 后                   ,必须在一定时间内(默认为 10min,可修改)             ,在对应的 NM 上启动该 Container                   ,否则 RM 将强制回收该 Container             。因为 YARN 不允许 AM 长时间不对其使用      ,会降低整个集群的利用率                   。

protected void expire(AllocationExpirationInfo allocationExpirationInfo) { dispatcher.handle(new ContainerExpiredSchedulerEvent( allocationExpirationInfo.getContainerId(), allocationExpirationInfo.isIncrease())); }

该类也继承自抽象类 AbstractLivelinessMonitor             ,前面已经讲过                   ,这里不再赘述      。

创心域SEO版权声明:以上内容作者已申请原创保护,未经允许不得转载,侵权必究!授权事宜、对本内容有异议或投诉,敬请联系网站管理员,我们将尽快回复您,谢谢合作!

展开全文READ MORE
autoware 路径规划算法(路径规划 | 图解A*、Dijkstra、GBFS算法的异同(附C++/Python/Matlab仿真)) 秦皇岛SEO关键字优化(秦皇岛seo排名提升)