Yarn的资源调度目前支持内存和CPU两种资源。
Yarn支持三种调度方式:FIFO、FAIR和DRF分别是指先来先服务、公平调度和主资源公平调度
FIFO:先按照优先级高低调度,如果优先级相同,则按照提交时间先后顺序调度,如果提交时间相同,则按照(队列或者应用程序)名称大小(字符串比较)调度;不支持有子队列的情况。
FAIR:按照内存资源使用量比率调度,即按照used_memory/minShare大小调度(核心思想是按照该调度算法决定调度顺序,但还需考虑一些边界情况);
DRF:借鉴了Mesos中的设计策略,按照主资源公平调度算法进行调度(包括内存和CPU)。
Yarn的资源调度器支持三种FIFO Scheduler ,FAIR Scheduler ,Capacity Scheduler。
单队列组织方式:FIFO Scheduler
- 将所有的应用程序放到一个队列中。
- 局限性明显:资源利用率低,无法交叉运行作业。不够灵活,比如紧急的作业无法插队。
多队列组织方式:Capacity Scheduler 和 FAIR Scheduler
- 每个队列可单独实现调度策略
- 每个队列对应一定比例的资源
- 优势明显:按队列组织资源和用户,符合生产需要。不同队列的资源分配策略不同,更加灵活。
Capacity Scheduler 和 FAIR Scheduler 不同点对比