YARN调度器详解
一.先介绍下yarn有哪些调度器:
- FIFO 先进先出
- Capacity 计算
- Fair 公平
二.这些调度器有什么差异
FIFO:意思就是谁的job先执行就会占用当前的所有资源,直到这个job执行结束之后才会执行下一个job,再生产上面不推荐,因为如果我凌晨一点执行了一个大型的job需要跑四个小时才能跑完,两点的时候我执行一个很小的job,正常跑只需要跑五分钟就跑好了,如果使用这个调度器,我必须要等第一个job跑完之后才能跑第二个job。
Capacity:apache版本的yarn的默认调度器,由yarn.resourcemanager.scheduler.monitor.policies这个参数控制,这个参数默认是:org.apache.hadoop.yarn.server.resourcemanager.monitor.capacity.ProportionalCapacityPreemptionPolicy。这个调度器会专门生成一个队列来运行小任务,但是如果没有小任务运行的时候,这个队列也会把资源占用,并没有释放
Fair:cdh默认调度器,这个调度器并不会预先占用一些资源,而是通过动态调度来实现资源分配的,假如我一点执行了一个三个小时的job,两点的时候执行了一个小的job,首先会查看第一个job里面是否有已经跑完并释放资源的Container,如果要是存在则在这个释放资源的Container里面跑第二个job,这个调度器再跑小任务的时候存在一定的延迟,因为并没有一个专门的队列再跑这些小任务,而是需要上个job里面的 Container跑完释放资源之后,才可以跑第二个job