【Hadoop集群-YARN】
Hadoop集群-YARN
1 YARN概念
YARN (Yet Another Resource Negotiator) 是 Apache Hadoop 生态系统中的分布式资源管理和作业调度系统。负责整个集群资源的分配与调度。
2 YARN 的资源调度方案
ResourceManager 中的调度器 (Scheduler) 是可插拔的,常见的调度策略有以下三种:
ps:生产环境一版不选择先进先出调度方案。一般选择容量调度器,可以划分多个租户,避免新手写了一个死循环,占用了整个集群的资源。
3 YARN 的架构与核心进程

YARN 采用主从(Master/Slave)架构,主要由以下几个核心组件构成:
1. ResourceManager (RM)
RM 是 YARN 的主节点(Master),负责整个集群的资源管理和调度。 其主要功能包括:
•处理客户端请求:接收客户端提交的应用程序。
•资源分配与调度:根据容量、队列等约束条件,通过内部的调度器(Scheduler) 为应用程序分配资源。
•监控节点状态:跟踪所有 NodeManager 的状态(通过心跳机制)。
•启动与监控 ApplicationMaster:为每个应用启动其对应的 ApplicationMaster,并在失败时重启。
•核心子组件:
•调度器 (Scheduler):纯调度器,根据容量、队列等约束条件分配资源,不负责应用程序的状态监控和容错。
•应用程序管理器 (Applications Manager, ASM):接收应用程序提交请求,为应用提供启动 ApplicationMaster 的容器,并管理应用程序的生命周期。
2. NodeManager (NM)
NM 是 YARN 的从节点(Slave),运行在集群中的每个工作节点上。 其主要职责包括:
•管理单节点资源:负责监控和管理本节点的资源使用情况(CPU、内存、磁盘、网络等)。
•处理来自 RM 的命令:接收并处理 ResourceManager 的容器启动/停止等各种指令。
•处理来自 AM 的命令:接收 ApplicationMaster 发出的启动或停止任务的请求。
•管理容器生命周期:启动、监控容器运行,并向 RM 汇报容器状态和节点健康状态。
3. ApplicationMaster (AM)
AM 是每个应用程序特有的一个实例。 你可以将其理解为应用程序的“项目经理”。其主要职责包括:
•资源协商:向 ResourceManager 的调度器申请合适的资源(Container)。
•任务协调:与 NodeManager 通信,在已分配的 Container 中启动具体的任务(如 Map Task 或 Reduce Task)。
•任务监控与容错:监控其管理的所有任务的状态,处理任务失败情况(如重新申请资源以重启任务)。
•进度报告:向客户端和 RM 报告应用程序的整体状态和进度。
4. Container容器
Container 是 YARN 中资源的抽象,它封装了某个节点上的多维度资源,如内存、CPU 核心、磁盘和网络等。 所有应用程序的任务(Map、Reduce 或 Spark Task 等)都是在 Container 中运行的。
4 YARN 的工作流程
1 应用程序提交
- 客户端向RM提交应用程序(含AM程序、启动命令等),RM分配唯一ApplicationID并返回资源路径。
- 客户端将作业资源(JAR包、配置文件等)上传至HDFS指定路径。
2 ApplicationMaster启动
- RM分配第一个Container,由NM启动AM。
- AM向RM注册并定期心跳通信,用户可通过RM查看应用状态。
3 资源申请与任务分配
- AM通过轮询向RM申请资源(Container),RM根据调度策略(如Capacity Scheduler)分配资源。
- AM与NM通信,在分配的Container中启动任务(如MapTask/ReduceTask),并监控任务状态。
4 任务执行与进度反馈
- NM为任务配置运行环境(环境变量、JAR包等),通过脚本启动任务。
- 任务通过RPC向AM汇报进度,失败时由AM重新申请资源并重启。
5 资源回收与注销
应用完成后,AM向RM注销并释放Container资源,RM清理应用状态。
所有评论(0)