-
1 YARN资源调度器种类
Hadoop作业调度器主要有三种:FIFO、Capacity Scheduler和Fair Scheduler。Apache Hadoop的默认调度器是Capacity Schedular,而CDH的默认调度器是Fair Schedular。如下对这三种调度器进行分别的介绍。
-
2 FIFO调度器【先入先出调度器】
-
特点:FIFO调度器按照任务到达的时间排序,先到先服务, 在当前强调多租户和资源利用率的大环境下,FIFO的使用率并不高。
-
优点:简单,不需要配置。
-
缺点:不适合共享集群。如果有大的app需要很多资源,那么其他app可能会一直等待。
- 3 Capacity Scheduler调度器【容器资源调度算法】
-
Capacity Scheduler由Yahoo开发。
-
特点:
-
同队列内部FIFO调度与多队列并行:每个队列可配置一定量的资源,每个采用FIFO的方式调度;多个队列同时按照任务队列内的先后顺序一次执行。例如下图中job11、job21、job31分别在各自队列中顺序比较靠前,三个任务就同时执行。
-
容量保证:管理员可以为每个队列设置资源最低保证和资源使用上限。
-
灵活性:分如果一个队列中的资源有剩余,可以暂时共享给其它需要资源的队列,而该队列若有新的应用程序提交,则其它队列借调的资源会归还给该队列。
-
多租户:支持多用户共享集群和多应用程序同时运行,为了防止同一个用户的作业独占队列的资源,该调度器会对同一用户提交的作业所占资源量进行限定。其次,按照job任务的优先级和时间顺序,同时要考虑到用户的资源量和内存的限制,对队列中的job任务进行排序执行。
-
-
调度策略:
-
优先学则资源利用率低的队列。
-
-
每个队列可以单独设置资源分配方式:FIFO、DRF
- 4 Fair Schedular【公平调度器】
-
公平调度器由FaceBook开发,其设计目的是在事件尺度上,所有作业获得公平的资源。
-
特点:
-
每个队列可以单独设置资源分配方式:FIFO、FAIR、DRF
-
与Capacity Scheduler调度器具有相同的1~4点。
-
缺额:某一时刻一个作业应获资源和实际资源的差距叫“缺额”。
-
- 核心调度策略:
-
优先选择对资源缺额比较大的。
- 5 资源分配方式
- FIFO策略
- 公平调度器每个队列资源分配策略如果选择FIFO,则公平调度器相当于容量调度器。
- FAIR策略
- FAIR策略默认情况下是一种基于最大最小公平算法实现的资源多路复用方式,默认情况下每个队列内部采用该方法来分配资源。这意味着,如果一个队列中有两个应用程序同时运行,则每个应用程序可以得到1/2的资源。具体资源分配流程和容器调度器一致:
-
选择队列
-
选择作业
-
选择容器
-
- 上述三个步骤都是按照公平策略分配资源:
- 实际最小资源份额:mindshare = Min(资源需求量,配置的最小配额)
- 是否饥饿:isNeedy = 资源使用量 < mindshare(实际最小资源份额)
- 资源分配比:mindShareRatio = 资源使用量 / Max(mindshare, 1)
-
资源使用权重比:useToWeightRatio = 资源使用量 /权重
- FAIR策略默认情况下是一种基于最大最小公平算法实现的资源多路复用方式,默认情况下每个队列内部采用该方法来分配资源。这意味着,如果一个队列中有两个应用程序同时运行,则每个应用程序可以得到1/2的资源。具体资源分配流程和容器调度器一致:
- DRF策略
- DRF(Dominant Resource Fairness),通常的资源都是单一的标准,例如只考虑内存的情况(YARN默认情况),但是多数情况是多种资源的复合,从而难以衡量两个应用应该分配的资源比例。
- YARN中DRF的调度方式:
-
假设集群一共有100 CPU 和10T内存,而应用 A 需要(2 CPU ,300GB),应用 B 需要(6 CPU ,100GB)。则两个应用分别需要 A (2%CPU。3%内存)和 B (6%CPU,1%肉存)的资源,这就意味着 A 是内存主导的,,B 是 CPU 主导的,针对这种情况,可以选择 DRF 策略对不同应用进行不同资源,CPU和内存的一个不同比例的限制。
-