yarn 调度器类型
- FIFO 先进先出调度器
- Capacity 容量调度器
- Fair 公平调度器
FIFO 先进先出调度器
特点:小任务容易阻塞,大任务会占用所有资源,不适合共享集群。
Capacity 容量调度器
特点:单独预留容量,保证小任务一提交就能马上启动,整体资源利用率不高,大作业执行时间要更长。
容量调度器允许多个组织共享hadoop集群,每个组织被分配专门的队列,每个队列可使用集群部分资源,在一个队列内,可食用FIFO调度策略进行调度。
弹性队列:单个任务允许使用超过队列容量的资源,去其他队列抢占,可以设置参数,保证抢占资源不超过某个比例。
支持延迟调度
Fair 公平调度器
特点:不需要预留容量,小任务启动将得到大任务一半资源,但是会有时间滞后,需要等待大任务将使用的资源释放出来,特点,保证高利用率的同时,小任务也能及时完成。
公平调度器允许多个队列共享资源,和容量调度类似,可通过一定规则设定,确定任务放置哪个队列。
在资源繁忙的情况下,任务提交空队列不会立即执行,而会等到资源释放才会启动。为了在确定的时间启动任务,会出现抢占的行为(降低资源利用率,因为会导致杀掉container重新执行),可通过配置抢占超时时间,默认0.5。
执行延时调度
延时调度
yarn 调度总会以数据本地化优先,有可能出现本地节点正在繁忙,此时默认配置会去请求同机架节点。但上通过实践发现,原地等待一段时间,可以提高集群效率,类似与Java自旋等待,可配置延迟时间。
主导资源公平性
针对每个任务,确定其主导资源,默认情况下,只考虑内存。