关于hadoop:深入浅出-Yarn-架构与实现41-ResourceManager-功能概述

1次阅读

共计 2608 个字符,预计需要花费 7 分钟才能阅读完成。

后面几篇文章对 Yarn 根本架构、程序根底库、利用设计办法等进行了介绍。之后几篇将开始对 Yarn 外围组件进行分析。
ResourceManager(RM)是 Yarn 的外围治理服务,负责集群治理、任务调度、状态机治理等,本篇将对 RM 总体架构进行介绍。

一、RM 根本职能

次要蕴含以下几个性能:

  • Client 交互:解决来自 Client 的申请;
  • 治理 ApplicationMaster:启动、治理、重启等;
  • 治理 Nodemanager:接管 NM 汇报的资源信息,并下达治理指令;
  • 资源管理与调度:接管 AM 的资源申请,并分配资源。

如上图所示,RM 中各组件通过对应 RPC 与各 Client 进行通信:

  • ResourceTrackerProtocol: NodeManager(NM)通过该 RPC 协定向 RM 注册、汇报节点健康状况和 Container 运行状态,并支付 RM 下达的命令。NM 与 RM 之间采纳了「pull 模型」,NM 总是周期性地被动向 RM 发动申请(心跳),并支付下达给本人的命令。
  • ApplicationMasterProtocol: 应用程序的 ApplicationMaster 通过该 RPC 协定向 RM 注册、申请资源和开释资源。(AM 与 RM 交互参考上一篇文章「3-3 Yarn Application Master 编写」)
  • ApplicationClientProtocol: 应用程序的客户端通过该 RPC 协定向 ResourceManager 提交应用程序、查问应用程序状态和控制应用程序(比方杀死应用程序)等。(AppClient 与 RM 交互参考文章「3-2 Yarn Client 编写」

从以上介绍中能够看出,与 RM 通过 RPC 通信的组件都采纳「Pull 模型」,各个「Client」通过心跳定期向 RM 汇报,在心跳返回值中支付 RM 下达的指令。

二、RM 外部架构

本节将深刻 RM 外部,看其外部组织构造和次要模块,架构图如下所示:

一)用户交互模块

RM 别离针对普通用户、管理员和 Web 提供了三种对外服务:

  • ClientRMService: 为普通用户提供的服务,它解决来自客户端各种 RPC 申请,比方提交应用程序、终止应用程序、获取利用程序运行状态等;
  • AdminService: RM 为管理员提供了一套独立的服务接口,以避免管理员发送的治理命令饿死,管理员可通过这些接口治理集群,比方动静更新节点列表、更新 ACL 列表、更新队列信息等;
  • WebApp: 更加敌对地展现集群资源应用状况和利用程序运行状态等信息。

二)NM 治理模块

  • NMLivelinessMonitor: 监控 NM 是否活着,长时间(默认为 10min)内未汇报心跳信息,则认为其挂了;
  • NodesListManager: 保护失常节点和异样节点列表,治理 exclude(相似于黑名单)和 include(相似于白名单)节点列表,这两个列表均是在配置文件中设置的,能够动静加载;
  • ResourceTrackerService: 解决来自 NM 的申请,次要包含注册和心跳两种申请。

三)AM 治理模块

  • AMLivelinessMonitor: 监控 AM 是否活着,长时间未汇报心跳,它下面所有正在运行的 Container 将被置为失败状态,而 AM 自身会被重新分配到另外一个节点上执行(AM 重试次数默认是 2);
  • ApplicationMasterLauncher: 与某个 NM 通信,要求它为某个应用程序启动 ApplicationMaster;
  • ApplicationMasterService(AMS): 解决来自 AM 的申请,次要包含注册和心跳两种申请。其中心跳汇报信息蕴含所需资源形容、待开释的 Container 列表、黑名单列表等,而 AMS 则为之返回相应的 Container 信息。

四)Application 治理模块

  • ApplicationACLsManage: 管理应用程序拜访权限,蕴含两局部权限:查看权限和批改权限;
  • RMAppManager: 管理应用程序的启动和敞开;
  • ContainerAllocationExpirer: 当 AM 收到 RM 新调配的一个 Container 后,必须在肯定的工夫内启动该 Container,否则将被回收。

五)状态机治理模块

RM 共保护四类状态机:

  • RMApp: 保护一个 Application 的整个运行周期,可能会包含屡次 Attempt;
  • RMAppAttempt: 一个实例运行失败后,可能再次启动一个从新运行,而每次启动称为一次运行尝试用「RMAppAttempt」形容,RMAppAttempt 保护了一次运行尝试的整个生命周期;
  • RMContainer: 保护一个 Container 的运行周期。RM 将资源封装成 Container 发送给应用程序的 AM,而 AM 则会在 Container 中启动工作;
  • RMNode: 保护一个 NM 的生命周期,包含启动到运行完结整个过程。

六)平安治理模块

RM 有十分全面的权限管理机制,次要包含:

  • ClientToAMSecretManager
  • ContainerTokenSecretManager
  • ApplicationTokenSecretManager

七)资源分配模块

该模块次要波及一个组件「ResourceScheduler」。其是资源调度器,依照肯定的约束条件(比方队列容量限度等)将集群中的资源分配给各个应用程序。
ResourceScheduler 是一个插拔式模块,自带三个调度器,用户能够本人定制:

  • FIFO:先进先出,单用户
  • Fair Scheduler: 偏心调度器 (FairScheduler 基本上具备其它两种的所有性能)
  • Capacity Scheduler: 容量调度器

此局部将在前面文章中更具体的介绍。

三、RM 事件与事件处理器

Yarn 采纳了事件驱动机制,而 RM 是的实现则是最好的例证。所有服务和组件均是通过地方异步调度器组织在一起的,不同组件之间通过事件交互,从而实现了一个异步并行的高效零碎。
上面是具体的表格:

四、小结

在 YARN 中,ResourceManager 负责集群中所有资源的对立治理和调配,它接管来自各个节点(NodeManager)的资源汇报信息,并把这些信息依照肯定的策略调配给各个应用程序。
本篇对 ResourceManager 总体架构进行了介绍。对其根本职能、内部结构、解决的事件进行了梳理。后续文章中将会对每个局部深刻源码进行更深刻探讨。


参考文章:
《Hadoop 技术底细 – 深刻解析 Yarn 结构设计与实现原理》第五章

正文完
 0