Yarn有哪些调度策略

YARN(Yet Another Resource Negotiator)是 Hadoop 2.x 及以后版本中的资源管理和作业调度框架。它的核心职责之一是 调度集群资源(如 CPU、内存)给不同的应用程序。YARN 支持多种调度策略,主要通过 可插拔的调度器(Scheduler) 实现。


一、YARN 调度器类型

YARN 提供三种主要的调度器:

1. FIFO Scheduler(先进先出调度器)

  • 原理:按照应用程序提交的先后顺序排队,先提交的先分配资源。
  • 特点
    • 简单、默认在早期 Hadoop 版本中使用。
    • 不支持多租户或多队列,大作业会阻塞小作业。
  • 适用场景:测试环境或单用户场景,生产环境一般不推荐

2. Capacity Scheduler(容量调度器) ✅(Hadoop 默认调度器

  • 设计目标:支持多组织/团队共享集群,保证每个队列有最低资源保障,同时允许资源弹性共享。
  • 核心机制
    • 集群资源被划分为多个 队列(Queues),每个队列配置 最小容量(capacity)
    • 队列内部作业按 FIFO 或其他策略调度。
    • 当某个队列未用满其容量时,空闲资源可被其他队列 临时借用(弹性共享)
    • 支持 层级队列(Hierarchical Queues),例如 root.devroot.prod
    • 支持 访问控制(ACL)资源限制优先级等。
  • 优点
    • 多租户友好
    • 资源隔离 + 弹性利用
    • 适合长期运行的生产环境
  • 配置文件capacity-scheduler.xml

📌 示例

  • root 队列下分 dev(40%)和 prod(60%)
  • dev 只用了 20%,则 prod 可临时使用剩余 20% 的资源

3. Fair Scheduler(公平调度器)

  • 设计目标:随着时间推移,让所有作业公平地共享集群资源
  • 核心机制
    • 所有作业被分配到 池(Pools)(类似队列)。
    • 资源按“公平份额”动态分配,小作业能快速获得资源,避免被大作业饿死。
    • 支持 最小资源保障(minResources)权重(weight) 调整优先级。
    • 默认情况下,新作业立即获得部分资源,实现低延迟响应。
  • 优点
    • 响应快,适合混合负载(交互式 + 批处理)
    • 自动平衡资源,无需精细配置
  • 配置文件fair-scheduler.xml

⚠️ 注意:从 Hadoop 3.1.0 开始,Fair Scheduler 已被标记为 deprecated(弃用),未来版本可能移除。官方推荐使用 Capacity Scheduler


二、调度策略对比

特性FIFOCapacity SchedulerFair Scheduler
多队列支持✅(层级队列)✅(池)
资源隔离✅(最小容量保障)⚠️(可配 minResources)
资源弹性共享✅(借用空闲资源)✅(动态公平分配)
适合多租户✅✅✅
小作业响应速度慢(被大作业阻塞)中(依赖队列配置)
是否默认Hadoop 1.x 是Hadoop 2.x/3.x 默认
是否推荐生产使用✅✅✅⚠️(已弃用)

三、如何选择调度器?

  • 企业生产环境Capacity Scheduler(功能全面、稳定、官方主推)
  • 教学/测试/单用户 → FIFO(简单)
  • 需要快速响应小作业(且 Hadoop < 3.1)→ Fair Scheduler(但需注意未来兼容性)

四、配置方式(简要)

切换调度器(在 yarn-site.xml 中):

<!-- 使用 Capacity Scheduler(默认) -->
<property>
  <name>yarn.resourcemanager.scheduler.class</name>
  <value>org.apache.hadoop.yarn.server.resourcemanager.scheduler.capacity.CapacityScheduler</value>
</property>

<!-- 使用 Fair Scheduler -->
<property>
  <name>yarn.resourcemanager.scheduler.class</name>
  <value>org.apache.hadoop.yarn.server.resourcemanager.scheduler.fair.FairScheduler</value>
</property>

然后根据所选调度器配置对应的 XML 文件。


总结

YARN 的调度策略核心在于 资源如何在多用户、多应用之间分配

  • Capacity Scheduler 是当前主流选择,兼顾隔离性与弹性;
  • Fair Scheduler 曾用于追求公平和低延迟,但已被弃用;
  • FIFO 仅适用于简单场景。

合理配置调度器,是构建高效、稳定大数据平台的关键一步。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

走过冬季

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值