YARN调度器对比:FIFO vs Capacity vs Fair
请比较YARN的三种调度器:FIFO Scheduler、Capacity Scheduler和Fair Scheduler的异同,并说明各自适用的场景。
回答
我是大山
1. FIFO Scheduler(先进先出调度器):
- 原理: 按Job提交顺序逐个执行,先提交的先获取全部资源
- 优点: 简单、无额外开销
- 缺点: 不支持多租户,大Job会阻塞小Job,响应延迟高
- 场景: 单用户、单队列的小集群,不推荐生产使用
2. Capacity Scheduler(容量调度器,默认):
- 原理: 将集群资源划分为多个队列(Queue),每个队列有最低容量保证和弹性上限
- 特点:
- 队列间资源隔离(如prod占70%,dev占30%)
- 队列空闲资源可借给其他队列(弹性)
- 支持层级队列(如
root.production.realtime) - 支持ACL访问控制
- 优点: 多租户隔离好,资源利用率高
- 场景: 企业中多团队共享集群,需要资源保障和隔离
3. Fair Scheduler(公平调度器):
- 原理: 所有Job公平分享资源,每个Job获得大致相同的资源量
- 特点:
- 短作业优先:小Job提交后快速获取资源执行
- 支持抢占(Preemption):当某队列资源不足时,回收超额分配的资源
- 支持延迟调度:等待数据本地性而延迟分配
- 优点: 响应时间短,适合交互式查询
- 场景: 多用户共享集群,对延迟敏感的场景
对比表: | 特性 | FIFO | Capacity | Fair | |------|------|----------|------| | 多租户 | ❌ | ✅ | ✅ | | 资源保证 | ❌ | ✅(最低容量)| ✅(最小份额)| | 抢占 | ❌ | ❌ | ✅ | | 延迟调度 | ❌ | ❌ | ✅ | | 复杂性 | 低 | 中 | 高 |