Yarn的三种调度策略

大数据技术 潘老师 3年前 (2021-02-24) 3058 ℃ (0) 扫码查看

1.FIFO策略:

Yarn的三种调度策略

说明:

假设有两个任务,第一个是任务需要大量资源;第二个需要少量资源,但是紧急重要任务,此时第二个需要等待第一个执行完,才能执行第二个。

弊端:

1)由于顺序执行任务,如果第一个是大量资源,后续任务需要等待。
2)没有做到资源共享。

FIFO Scheduler:从字面不难看出就是先进先出策略,所有的任务都放在一个队列中,只有执行完一个任务后,才会进行下一个。这种调度方式最简单,但真实场景中并不推荐,因为会有很多问题,比如如果有大任务独占资源,会导致其他任务一直处于 pending 状态等。

2.容量调度策略:

Yarn的三种调度策略

说明:

1)属于共享调度策略。
2)将集群资源,给队列分配部分资源,每个队列互不干涉

弊端:

某个队列突然来个大的任务,那这个大的任务不会占用其他队列资源,执行时间长,效率低。
配置弹性队列:允许队列超过自己配置的容量,但仅在其他队列没有占用资源的情况下。

Capacity Scheduler:也就是所谓的容量调度,这种方案更适合多租户安全地共享大型集群,以便在分配的容量限制下及时分配资源。采用队列的概念,任务提交到队列,队列可以设置资源的占比,并且支持层级队列、访问控制、用户限制、预定等等配置。不过对于资源占用比需要不断的摸索与权衡

3.公平调度策略:

Yarn的三种调度策略

说明:

队列间可以互相共享资源,如果权重高的任务来了,权重低的任务会分给权重高的任务部分资源,必要时,可kill掉权重低的任务。

配置公平调度策略

启用公平调度策略,配置属性yarn.resourcemanager.scheduler.class

<property>
    <name>yarn.resourcemanager.scheduler.class</name>
           <value>org.apache.hadoop.yarn.server.resourcemanager.scheduler.fair.FairScheduler</value>
</property>
Fair Scheduler:就是公平调度器,能够公平地共享大型集群中的资源,Fair 调度器会为所有运行的 job 动态的调整系统资源。当只有一个 job 在运行时,该应用程序最多可获取所有资源,再提交其他 job 时,资源将会被重新分配分配给目前的 job,这可以让大量 job 在合理的时间内完成,减少作业 pending 的情况。可见 Fair Schedule 比较适用于多用户共享的大集群

3.Fair Scheduler 和 Capacity Scheduler 的比较

随着 Hadoop 版本逐渐演化,Fair Scheduler 和 Capacity Scheduler 的功能越来越完善,因此两个调度器的功能也逐渐趋近,由于 Fair Scheduler 支持多种调度策略,因此可以认为 Fair Scheduler 具备了 Capacity Scheduler 的所有功能。

4.调度策略的选择

通过分析常见的几种调度器,选用 Fair Schedule 调度器更适合共享型大集群,资源调度并没有最优解,需要不断探索实践去寻找适合目前现状的方案;在发展的不同阶段遇到不同的问题,通过解决问题逐渐去优化和完善。


版权声明:本站文章,如无说明,均为本站原创,转载请注明文章来源。如有侵权,请联系博主删除。
本文链接:https://www.panziye.com/java/bigdata/1954.html
喜欢 (4)
请潘老师喝杯Coffee吧!】
分享 (0)
用户头像
发表我的评论
取消评论
表情 贴图 签到 代码

Hi,您需要填写昵称和邮箱!

  • 昵称【必填】
  • 邮箱【必填】
  • 网址【可选】