当前位置: 首页 > news >正文

Yarn三种调度器详解及默认调度器说明

前言:Yarn作为Hadoop生态中的核心资源调度平台,负责为MapReduce、Spark、Flink等运算程序分配CPU、内存等服务器资源,其调度器的选择直接影响集群资源的利用率和任务执行效率。本文干货满满,新手友好,将详细介绍Yarn的三种调度器核心特性、适用场景,以及默认调度器的配置与修改方法,结合实操细节,帮助大家快速掌握Yarn调度器的核心知识点,轻松应对集群调度配置需求。

一、Yarn核心基础回顾

在了解调度器之前,先简单回顾Yarn的核心定位和工作流程,帮助大家建立整体认知:

  • Yarn核心定位:分布式资源调度器,相当于分布式操作系统平台,为上层运算程序(MR/spark/flink)提供资源支持。

  • Hadoop核心组成:hadoop = HDFS + MapReduce + Yarn,其中HDFS负责存储数据,MapReduce负责分布式计算,Yarn负责资源调度。

  • Yarn核心工作流程:客户端提交作业 → ResourceManager(RM)接收请求并调度 → NodeManager(NM)创建Container启动ApplicationMaster(AM) → AM申请资源并监控任务执行 → 任务完成后AM注销。

Yarn的核心调度能力,就体现在ResourceManager(RM)对任务的调度逻辑上,不同调度器对应不同的资源分配规则,下面我们逐一拆解三种核心调度器的细节。

二、Yarn的三种调度器详解

Yarn提供了三种核心任务调度策略,分别是FIFO Scheduler、Capacity Scheduler和Fair Scheduler,每种调度器有其独特的适用场景和工作逻辑,下面逐一拆解。

2.1 FIFO Scheduler(先进先出调度器)

这是最基础、最简单的调度器,核心逻辑就是“先来后到”,将所有提交的应用按照提交顺序排成一个单一队列,前一个任务执行完成后,后一个任务才能开始执行,无任何资源隔离机制。

核心特点:
  • 无资源隔离,整个集群资源被队列中的任务依次占用;

  • 优点:实现简单、无额外配置成本;

  • 缺点:资源利用率极低,大任务会阻塞小任务。例如,一个占用100%资源的大任务执行4小时,后续提交的小任务只能等待4小时后才能执行;

  • 适用场景:仅适用于单用户、任务量少、无并发需求的测试环境,企业生产环境中几乎不使用

2.2 Capacity Scheduler(容量调度器)

容量调度器是Yarn的默认调度器,也是中小企业最常用的调度器,核心设计目标是支持多组织、多用户共享集群资源,通过队列划分实现资源隔离和固定容量分配,避免单个用户或任务耗尽集群资源。

核心特点:
  • 多队列机制:为不同组织、不同业务分配专门的队列,每个队列分配固定的集群资源(如A队列占40%内存,B队列占60%内存);

  • 队列嵌套:队列内部可垂直划分,满足同一组织内不同成员、不同任务的资源共享需求;

  • 调度逻辑:队列内部采用FIFO策略,队列之间按分配的容量比例调度,空闲队列的资源可被其他队列临时借用(需配置最大容量限制);

  • 适用场景:中小企业、多组织共享集群的场景,支持任务优先级配置、资源限制,能有效避免单个任务耗尽集群资源。

2.3 Fair Scheduler(公平调度器)

公平调度器的核心目标是“资源公平分配”,不遵循提交顺序,而是为所有运行中的应用动态分配公平的资源(公平性可通过参数灵活配置),适合任务并发量高、任务类型多样的大型集群。

核心特点:
  • 动态资源分配:当集群中只有一个应用时,该应用占用全部集群资源;当有新应用提交时,已运行的应用会释放部分资源,最终所有应用公平共享资源;

  • 多队列支持:可在多个队列间实现公平调度,每个队列可配置资源权重,权重越高,获得的资源越多;

  • 优点:资源利用率高,适合多用户、多任务并发的场景,能避免小任务被大任务长期阻塞;

  • 适用场景:大型企业、高并发任务集群,尤其是任务类型多样(有大任务、小任务)、对资源公平性要求高的场景。

三、Yarn默认调度器及修改方法

3.1 默认调度器

重点强调:Yarn的默认调度器是Capacity Scheduler(容量调度器),其核心配置由`yarn-site.xml`文件中的`yarn.resourcemanager.scheduler.class`参数控制,默认配置如下(直接复制可用):

<property> <name>yarn.resourcemanager.scheduler.class</name> <value>org.apache.hadoop.yarn.server.resourcemanager.scheduler.capacity.CapacityScheduler</value> </property>

3.2 调度器修改方法(以切换为公平调度器为例)

实际生产中,若需根据集群规模和业务需求,将默认的容量调度器修改为公平调度器,需完成以下3步配置(基于Hadoop 3.x版本,实操可直接参考):

步骤1:修改yarn-site.xml配置

在`yarn-site.xml`中添加/修改以下参数,指定公平调度器,并配置其专属配置文件路径:

<property> <name>yarn.resourcemanager.scheduler.class</name> <value>org.apache.hadoop.yarn.server.resourcemanager.scheduler.fair.FairScheduler</value> </property> <property> <name>yarn.scheduler.fair.allocation.file</name> <value>/opt/installs/hadoop3.1.4/etc/hadoop/fair-scheduler.xml</value> </property>

关键说明:`fair-scheduler.xml`是公平调度器的核心队列配置文件,需自行创建并根据实际业务配置队列资源、权重、调度策略等,配置错误会导致Yarn启动失败。

步骤2:配置fair-scheduler.xml

创建`fair-scheduler.xml`文件,以下是通用示例配置(可根据自身集群资源调整参数,直接复制可快速搭建基础配置):

<?xml version="1.0"?> <allocations> <!-- 单个队列中Application Master占用资源的最大比例,取值0-1 --> <queueMaxAMShareDefault>0.5</queueMaxAMShareDefault> <!-- 单个队列最大资源的默认值 --> <queueMaxResourcesDefault>4096mb,4vcores</queueMaxResourcesDefault> <!-- 自定义队列zs --> <queue name="zs"> <minResources>2048mb,2vcores</minResources> <maxResources>4096mb,4vcores</maxResources> <maxRunningApps>4</maxRunningApps> <maxAMShare>0.5</maxAMShare> <weight>1.0</weight> <schedulingPolicy>fair</schedulingPolicy> </queue> <!-- 任务队列分配策略 --> <queuePlacementPolicy> <rule name="specified" create="false"/> <rule name="default" /> </queuePlacementPolicy> </allocations>
步骤3:生效配置

1. 将修改后的`yarn-site.xml`和`fair-scheduler.xml`分发到集群所有节点;

2. 重启Yarn集群(或执行`yarn rmadmin -refreshQueues`刷新队列配置);

3. 提交任务时,可通过`-D mapreduce.job.queuename=队列名`指定队列,验证调度器是否生效(若未指定队列,将按`fair-scheduler.xml`中的队列分配策略执行)。

四、三种调度器对比总结

调度器类型

核心逻辑

优点

缺点

适用场景

FIFO Scheduler

先进先出,无资源隔离

实现简单、无配置成本

资源利用率低,小任务被大任务阻塞

测试环境、单用户场景

Capacity Scheduler

多队列、固定容量,队列内FIFO

资源隔离、支持多组织共享,配置简单

资源分配不够灵活,队列空闲资源借用有限制

中小企业、多组织共享集群

Fair Scheduler

动态公平分配资源,支持权重配置

资源利用率高,避免任务阻塞,灵活度高

配置复杂,需维护专属配置文件

大型企业、高并发任务集群

五、注意事项

  • 生产环境中,优先选择容量调度器(默认)或公平调度器,严禁使用FIFO调度器,避免出现资源浪费和任务阻塞问题;

  • 修改调度器配置后,必须重启Yarn集群或执行`yarn rmadmin -refreshQueues`刷新队列配置,否则配置无法生效;

  • 公平调度器的`fair-scheduler.xml`文件路径必须配置正确,路径错误会直接导致Yarn集群启动失败;

  • 多队列配置时,需根据业务优先级合理分配各队列资源容量,避免单个队列占用过多资源,影响其他队列正常运行。

结语:掌握Yarn三种调度器的特点和适用场景,是做好Hadoop集群资源管理的基础。实际应用中,可根据集群规模、用户数量、任务类型,选择合适的调度器,或通过多队列配置实现更精细的资源管理,提升集群运行效率。如果觉得本文有用,欢迎点赞收藏,后续会持续更新Hadoop实操干货!

http://www.jsqmd.com/news/615658/

相关文章:

  • stock-sdk-mcp 的实践整理绰
  • Kafka、ES、Flink、Spark 如何撑起高并发大数据平台?
  • Linux相关概念和易错知识点(52)(基于System V的信号量和消息队列)
  • F-Theta扫描透镜的性能评估
  • 2026年垃圾中转站设备优质推荐榜:移动垃圾压缩站、竖直直压式垃圾站、压缩垃圾中转站、地埋式垃圾压缩站、垂直式垃圾压缩站选择指南 - 优质品牌商家
  • [AI/向量数据库/GUI] Attu : Milvus 的图形化与一体化管理工具勇
  • 如何实现一个可插入自定义标签的文本输入框
  • 从零构建可审计、可回滚、可监控的向量检索服务:EF Core 10架构设计图+DDD分层实践(含GitHub可运行Demo)
  • 2026档案室密集柜推荐榜:档案室用密集柜/档案智能密集柜/橱式密集柜/电动密集柜/电动密集档案柜/移动档案密集柜/选择指南 - 优质品牌商家
  • OpenClaw插件开发:为Qwen3-14b_int4_awq添加钉钉通道支持
  • 电容是什么?一个“快充快放”的微型充电宝坷
  • 毕业设计实战:基于SSM+MySQL的社区医疗服务预约管理系统设计与实现指南
  • 别再踩坑了!SQL Server数据类型那点事儿,看懂这篇少背三个锅竟
  • 嵌入式系统开发:硬件思维与架构实践
  • 一个进程是 host root vs docker root
  • Linux I/O 演进史:从管道到零拷贝,一篇串起个服务端核心原语纠
  • OpenClaw技能组合策略:Qwen3-32B在复杂工作流中的模块化调用
  • 金融PHP支付配置终极Checklist(2024Q3央行金融科技新规适配版):58项必检条目,漏1项即触发监管通报
  • 绵阳高新区小学晚托自习
  • A Gift from the Integration of Discriminative andDiffusion-based Generative Learning: BoundaryRefi
  • OpenClaw配置备份指南:gemma-3-12b-it环境快速迁移与恢复
  • 嵌入式文件传输协议选型与优化实践
  • OpenClaw备份恢复方案:Qwen3-32B任务历史与技能配置迁移
  • OpenClaw代码审查:Qwen3.5-9B自动化质量检查
  • 2026武汉高评价日常保洁TOP10推荐:武汉物业保洁公司/武汉企业保洁公司/武汉保洁公司/武汉保洁外包公司/武汉保洁托管公司/选择指南 - 优质品牌商家
  • 嵌入式通信协议的状态机接收模块设计与优化
  • 2026年可靠熔体流动速率仪TOP推荐:简支梁冲击试验机/落锤冲击试验机/制样机/差热/差示扫描量热仪/开闭孔率测定仪/选择指南 - 优质品牌商家
  • SpringCloud-Stream + RocketMQ/Kafka
  • Boodskap数字孪生Arduino客户端库深度解析
  • 【Java】通过Mybatis Plus自带的方式,实现公共字段自动填充。