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清理应用状态。‌

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区