在 Apache Hadoop YARN 架构中,ResourceManager 具体承担哪些职责?它在整个集群资源调度与作业运行过程中扮演怎样的角色?
考察说明
考查对 YARN 核心组件 ResourceManager 功能定位与集群管理作用的理解程度。
回答思路
- 【回答框架 1】ResourceManager 是 YARN 中的全局资源管理器,负责整个集群资源的统一管理和分配。它由两个核心组件构成:调度器(Scheduler)和应用管理器(ApplicationsManager)。调度器只负责根据容量、队列等策略将资源分配给各个应用,不监控应用状态;应用管理器则接收作业提交请求,协商容器资源,并监控 ApplicationMaster 的运行状态,在失败时重启。
- 【回答框架 2】在作业运行流程中,客户端提交作业后,ResourceManager 会为作业分配一个 ApplicationMaster。ApplicationMaster 启动后向 ResourceManager 注册,并周期性发送心跳汇报自身状态和资源需求。ResourceManager 根据心跳信息和集群资源状况,为应用分配容器资源,并指导节点管理器启动容器。
- 【回答框架 3】作为集群的中央协调者,ResourceManager 维护整个集群的资源状态信息,包括每台节点上的可用资源(CPU、内存等)。它负责接收 NodeManager 的心跳,跟踪节点健康状态,对故障节点上的任务进行重新调度,从而保证集群资源的高效利用和作业的可靠执行。
- 【回答框架 4】ResourceManager 还支持高可用与联邦部署。高可用模式下通过 Zookeeper 实现主备切换;联邦部署则将多个 ResourceManager 组成联盟,共同管理大规模集群,提升扩展性。它通过抽象的资源容器(Container)模型,实现了计算资源的细粒度分配和复用。
- 【关键点 1】ResourceManager 负责集群资源的统一管理和作业的调度分配。
- 【关键点 2】它由调度器(Scheduler)和应用管理器(ApplicationsManager)两大组件构成。
- 【关键点 3】调度器只负责资源分配策略,不监控应用运行状态。
- 【关键点 4】应用管理器负责作业的提交、监控和失败重启。
- 【关键点 5】ResourceManager 维护集群全局资源视图,并支持高可用与联邦扩展。
- 【易错点 1】不要将 ResourceManager 的职责局限于单一的资源分配,忽略了它同时承担应用管理、协调和容错的功能。
- 【易错点 2】注意区分 ResourceManager 与 NodeManager 的角色,前者是全局资源调度,后者是单节点资源管理和容器启动。
- 【易错点 3】高可用不是简单的多实例同时工作,而是通过 Zookeeper 选举实现主备切换,避免脑裂。