yarn 的三种 scheduler

yarn 的三种 scheduler

yarn 作为资源管理器为了应对不同的调度需求,满足不同场景的下任务对资源的需求,提供了可设置的scheduler

本文主要是简单介绍下三种scheduler

具体的设置项在 yarn_site.xml

FairScheduler

<property>
  <name>yarn.resourcemanager.scheduler.class</name>
  <value>org.apache.hadoop.yarn.server.resourcemanager.scheduler.fair.FairScheduler</value>
</property>

capacityScheduler

<property>
  <name>yarn.resourcemanager.scheduler.class</name>
  <value>org.apache.hadoop.yarn.server.resourcemanager.capacity.CapacityScheduler</value>
</property>

fifoScheduler

<property>
  <name>yarn.resourcemanager.scheduler.class</name>
  <value>org.apache.hadoop.yarn.server.resourcemanager.fifo.FifoScheduler</value>
</property>

cdh 设置页面



一 、capacity scheduler 

这种scheduler是yarn运行的默认的模式

The CapacityScheduler 的设计目的是将Hadoop应用程序作为一个共享的、多租户集群,以一种便于操作的方式运行,同时最大限度地提高集群的吞吐量和利用率。

传统上,每个组织都拥有自己的专用计算资源(主要是cpu和内存资源),这些计算资源具有足够的容量来满足组织在峰值或接近峰值条件下的SLA(服务等级协议)。这通常会导致管理多个独立群集的平均利用率和开销较低,每个组织一个。在组织之间共享集群是运行大型Hadoop安装的具有成本效益的方式,因为这可以让他们在不创建私有集群的情况下获得规模经济效益。但是,组织担心共享集群,因为他们担心其他人使用对SLA至关重要的资源。

CapacityScheduler旨在允许共享大型群集,同时为每个组织提供容量保证。其核心思想是Hadoop集群中的可用资源由多个组织共享,这些组织根据集群的计算需求共同为集群提供资金。还有一个额外的好处是,一个组织可以访问任何多余的容量不被他人使用。这为组织提供了具有成本效益的弹性。
在组织间共享集群需要对多租户提供强有力的支持,因为必须确保每个组织都有能力和安全防护,以确保共享集群不受单个应用程序或用户或其集合的影响。 CapacityScheduler提供了一组严格的限制,以确保单个应用程序或用户或队列不会消耗群集中不成比例的资源。另外,CapacityScheduler对来自单个用户和队列的初始化/待处理应用程序提供限制,以确保集群的公平性和稳定性。
CapacityScheduler提供的主要抽象是队列的概念。这些队列通常由管理员设置以反映共享群集的经济性。

为了对共享资源提供进一步的控制和可预测性,CapacityScheduler支持层次化队列,以确保在其他队列被允许使用免费资源之前,在组织的子队列之间共享资源 - 通过提供亲和力来共享应用程序间的空闲资源某个组织的特征。

CapacityScheduler对资源的处理相对合理,适用于各任务的资源占比相差不大,能确保各种任务都有合理的资源去运行,非常适用于企业级的平台,接入的应用用户比较多的情况下使用。

二、fairScheduler

fairScheduler即是公平调度


公平调度是一种为应用程序分配资源的方法,以便所有应用程序平均获得相同份额的资源。 Hadoop NextGen能够调度多种资源类型。默认情况下,Fair Scheduler只基于内存调度公平性决策。它可以配置为使用Ghodsi等人开发的主导资源公平的概念来调度内存和CPU。当有一个应用程序在运行时,该应用程序将使用整个群集。当提交其他应用程序时,释放的资源将分配给新应用程序,以便每个应用程序最终获得大致相同的资源量。与构成应用程序队列的默认Hadoop计划程序不同,这可以让短应用程序在合理的时间内完成,而不会挨饿长时间的应用程序。在多个用户之间共享一个集群也是一种合理的方式。最后,公平分享也可以与应用优先级一起工作 - 优先级被用作权重来确定每个应用应该获得的总资源的一小部分。


调度程序将应用程序进一步组织为“队列”,并在这些队列之间公平地共享资源。默认情况下,所有用户共享一个名为“default”的队列。如果某个应用程序专门在容器资源请求中列出了一个队列,则该请求将被提交给该队列。也可以根据通过配置请求包含的用户名来分配队列。在每个队列中,调度策略用于在正在运行的应用程序之间共享资源。缺省值是基于内存的公平共享,但也可以配置具有主导资源公平性的FIFO和多资源。队列可按层次结构进行排列,以分配资源并配置权重以按特定比例共享群集。


除了提供公平共享之外,公平调度程序允许将保证的最小份额分配给队列,这对确保某些用户,组或生产应用程序始终获得足够的资源非常有用。当一个队列包含应用程序时,它至少会获得其最小份额,但是当队列不需要其全部保证份额时,多余份额将在其他正在运行的应用程序之间进行分割。这可以让调度程序保证队列的容量,同时在这些队列不包含应用程序时有效地利用资源。


Fair Scheduler允许所有应用默认运行,但也可以通过配置文件限制每个用户和每个队列运行的应用数量。当用户必须一次提交数百个应用程序时,或者一般来说,如果一次运行太多应用程序会导致创建过多的中间数据或过多的上下文切换,可以提高性能。限制应用程序不会导致任何随后提交的应用程序失败,只能在调度程序的队列中等待,直到用户的某些早期应用程序完成。


三、fifoScheduler

fifo即是先进先出,通俗的说就是哪个任务先来就执行哪个直到其结束,这种模式其实不太灵活的,一般很少使用,官网上的资料也是比较少。

一 、capacity scheduler  

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值