大数据基础:Hadoop之Yarn重点架构原理

文章目录

Hadoop之Yarn重点架构原理

一、Yarn介绍

二、Yarn架构

三、Yarn任务运行流程

四、Yarn三种资源调度器特点及使用场景


Hadoop之Yarn重点架构原理

一、Yarn介绍

Apache Hadoop Yarn(Yet Another Reasource Negotiator,另一种资源协调者)是Hadoop2.x版本后使用的资源管理器,可以为上层应用提供统一的资源管理平台。

二、Yarn架构

Yarn主要由ResourceManager、NodeManager、ApplicationMaster、Container组成。

  • ResourceManager

ResourceManager是Yarn集群中的中央管理器,负责整个集群的资源分配与调度。ResourceManager负责监控NodeManager节点状态、汇集集群资源,处理Client提交任务的资源请求,为每个Application启动AppliationMaster并监控。

  • NodeManager

NodeManager负责管理每个节点上的资源(如:内存、CPU等)并向ResourceManager报告。当ResourceManager向NodeManager分配一个容器(Container)时,NodeManager负责启动该容器并监控容器运行,此外,NodeManager还会接收AplicationMaster命令为每个Application启动容器(Container)。

  • ApplicationMaster

每个运行在Yarn中的应用程序都会启动一个对应的ApplicationMaster,其负责与ResourceManager申请资源及管理应用程序任务。ApplicationMaster本质上也是一个容器,由ResourceManager进行资源调度并由NodeManager启动,ApplicationMaster启动后会向ResourceManager申请资源运行应用程序,ResourceManager分配容器资源后,ApplicationMaster会连接对应NodeManager通知启动Container并管理运行在Container上的任务。

  • Container

Container 容器是Yarn中的基本执行单元,用于运行应用程序的任务,它是一个虚拟环境,包含应用程序代码、依赖项及运行所需资源(内存、CPU、磁盘、网络)。每个容器都由ResourceManager分配给ApplicationMaster,并由NodeManager在相应的节点上启动和管理。容器的资源使用情况由NodeManager监控,并在必要时向ResourceManager报告。

Yarn核心就是将MR1中JobTracker的资源管理和任务调度两个功能分开,分别由ResourceManager和ApplicationMaster进程实现,ResourceManager负责整个集群的资源管理和调度;ApplicationMaster负责应用程序任务调度、任务监控和容错等。

三、Yarn任务运行流程

  1. 在客户端向Yarn中提交MR 任务,首先会将MR任务资源(Split、资源配置、Jar包信息)上传到HDFS中。

  2. 客户端向ResourceManager申请启动ApplicationMaster。

  3. ResourceManager会选择一台相对不忙的NodeManager节点,通知该节点启动ApplicationMaster(Container)。

  4. ApplicationMaster启动之后,会从HDFS中下载MR任务资源信息到本地,然后向ResourceManager申请资源用于启动MR Task。

  5. ResourceManager返回给ApplicationMaster资源清单。

  6. ApplicationMaster进而通知对应的NodeManager启动Container

  7. Container启动之后会反向注册到ApplicationMaster中。

  8. ApplicationMaster 将Task任务发送到Container 运行,Task任务执行的就是我们写的代码业务逻辑。

四、Yarn三种资源调度器特点及使用场景

  • FIFO调度器(First-In-Fist-Out Scheduler),Yarn中最简单的调度器。FIFO Scheduler 会将提交的应用程序按提交顺序放入一个先进先出的队列中,进行资源分配时,先给队列中最头上的应用分配资源,待头上的应用资源需求满足后再给下一个应用分配资源,以此类推。这种调度器调度资源时,有可能某个资源需求大的应用占用所有集群资源,从而导致其他的应用被阻塞。

  • **Capacity调度器(Capacity Schduler)**是Yarn中默认配置的资源调度器,允许多租户安全地共享一个大型集群。Capacity调度器中,支持配置多个资源队列,可以为每个资源队列指定最低、最高可使用的资源比例,在进行资源分配时,优先将空闲资源分配给"实际资源/预算资源"比值最低的队列,每个资源队列内部采用FIFO调度策略。

  • **Fair调度器(Fair Scheduler)**是一个将Yarn资源公平的分配给各个Application的资源调度方式,这种调度方式可以使所有Application随着时间的流逝可以获取相等的资源份额,其设计目标就是根据定义的参数为所有的Application分配公平的资源。

Yarn中FIFO、Capacity、Fair三种资源调度器区别对比如下:

|----------------------------------|-----------------------------------------------------------------------------------------|-------------------------------------------------------------|
| Yarn资源调度器 | 特点 | 适用场景 |
| FIFO调度器 | 1、简单易懂,无需额外配置。 2、应用按照提交的先后顺序(先进先出)运行。 3、不适合共享集群,每个应用必须等待直到轮到自己运行。 | 非共享集群,对任务执行顺序要求不高的场景。生产环境一般不用。 |
| Capacity调度器 (开源Yarn默认使用) | 1、允许多个组织共享集群资源,每个组织拥有专门的队列。 2、支持队列的层次划分,以及队列资源的灵活配置。 3、可以限制队列的最大容量,缓解资源竞争。 | 共享集群的场景,多个组织或团队共享同一集群资源的情况。 |
| Fair调度器 (CDH默认使用) | 1、公平地为所有运行的应用分配资源,支持多个队列间的资源公平共享。 2、支持动态创建队列,并通过一套规则系统确定应用的放置位置。 3、支持资源的抢占功能,确保资源的公平分配。 | 1、 多个用户或组织在共享集群中需要公平地获得资源的场景。 2、 对队列级别的资源控制和细粒度调度策略要求较高的环境。 |


  • 📢博客主页:https://lansonli.blog.csdn.net
  • 📢欢迎点赞 👍 收藏 ⭐留言 📝 如有错误敬请指正!
  • 📢本文由 Lansonli 原创,首发于 CSDN博客🙉
  • 📢停下休息的时候不要忘了别人还在奔跑,希望大家抓紧时间学习,全力奔赴更美好的生活✨
相关推荐
遇码10 小时前
流式调用中途断连别直接报错:瞬态故障识别、退避重试与中文根因诊断的搭建方法
大数据·人工智能·ai·rust·数据分析·大模型·agent
Jlzn888810 小时前
华东电芯分选通道数怎么配才不堵线
java·人工智能·架构·自动化·制造
JXJD200410 小时前
224G PAM4 高速线束:阻抗匹配设计与损耗控制的核心逻辑
大数据·ai
康实训10 小时前
老年评估仿真实训平台架构设计与老年人能力评估实训室教学落地实践
大数据·人工智能·算法·实训室·实训室建设
ha_lydms11 小时前
Datetime Functions(日期时间函数)
大数据·hadoop·阿里云·spark·数据处理·dataworks·maxcompute
lisw0511 小时前
制造业信息化:现代工业的发展趋势!
大数据·网络·人工智能
AllData公司负责人11 小时前
AllData搭建大模型资产中台集成开源项目BISHENG/Crater/Coze-Studio/Coze-Loop/DataFIow,建设AI大模型开发底座
大数据·人工智能·开源·bisheng·coze-studio·crater·datafiow
CCblandy11 小时前
雪花 ID 四个边界实测:时钟回拨重号 500 个,前端 JSON.parse 直接丢精度
后端·python·算法·性能优化·架构
cc57250265311 小时前
2027校招岗位拆解:数学与应用数学转量化运营,SQL、Python与量化研究要求有何不同?
大数据
阡陌数智11 小时前
Gemini 4 Argon 百万 Token 输出能力解析:原生长输出模型的工程落地与并发成本治理
人工智能·架构