yarn的三大组件及各自的作用
### YARN 的三大核心组件及其功能和作用
#### 1. **ResourceManager**
ResourceManager 是 YARN 中的全局资源管理器,负责整个集群的资源管理和分配。它的主要职责包括:
- **资源监控与分配**:通过接收来自各节点 NodeManager 的心跳信号来监控集群中每台机器的资源使用情况(如 CPU 和内存),并将这些资源整合起来形成统一视图。
- **调度策略实施**:依据预设好的调度算法(例如 FairScheduler 或 CapacityScheduler)决定如何将有限的计算能力合理地分派给不同的应用程序实例。
- **高可用性支持**:提供主备切换机制,在主 ResourceManager 出现故障时可以迅速启用备用节点继续维持服务正常运转。
#### 2. **NodeManager**
作为每个节点上的代理程序,NodeManager 主要承担所在主机层面的任务执行与资源配置管理工作。具体来说有以下几个方面的作用:
- **本地化任务控制**:按照 ApplicationMaster 发来的指令启动或者终止指定容器(Container),同时保持对这些进程生命周期的有效监督。
- **周期性汇报状态**:定时向中央级别的 ResourceManager 上报当前设备剩余可利用资源数量以及正在运行中的所有容器详情。
- **应急响应能力**:一旦检测到原定联系对象即主 ResourceManager 不可达,则会自动尝试接入替代方案——也就是事先设定好待命状态下的次级 ResourceManager。
#### 3. **ApplicationMaster**
对于每一个提交至 YARN 平台运行的应用而言,都会伴随产生一个专属自己的 ApplicationMaster 实例。以下是它的一些关键职能描述:
- **资源请求中介**:充当桥梁角色,代表所属应用向 ResourceManager 请求必要的运算单元配额(表现为 Containers 形式呈现)。
- **内部负载均衡**:把从外部争取回来的整体份额细化拆解成更细粒度的部分再分别指派给下辖各项独立操作环节去完成各自使命。
- **错误恢复处理**:持续追踪记录下属全部活动进展状况;倘若发现某个组成部分发生异常中断现象,则立即着手安排重试机会直至最终成功为止。
---
### 总结
YARN 的三个核心组件共同协作构建起了完整的分布式资源管理体系结构。其中 ResourceManager 扮演着宏观调控者的身份统筹规划全局视角下的资产布局;而遍布各个物理服务器端口处驻扎的 NodeManagers 则专注于微观领域里的细节把控;最后再加上针对单个项目定制开发出来的个性化管理者——ApplicationMasters ——三方联动才能确保整体架构稳定高效运作下去。
---