Fair Share 指的都是Yarn根据每个队列的权重、最大最小可运行资源计算的得到的可以分配给这个队列的最大可用资源。
yarn调度器的配置
1)yarn的三种调度策略 MR1
FIFO策略:

有两个任务,第一个是任务需要大量资源;第二个需要少量资源,但是紧急重要任务,此时第二个需要等待第一个执行完,才能执行第二个。
弊端:由于顺序执行任务,如果第一个是大量资源,后续任务需要等待。
没有做到资源共享。
容量调度策略:

共享调度策略。
将集群资源,给队列分配部分资源,每个队列互不干涉
弊端:
某个队列突然来个大的任务,那这个大的任务不会占用其他队列资源,执行时间长,效率低。
配置弹性队列:允许队列超过自己配置的容量,但仅在其他队列没有占用资源的情况下。

容量调度,加上弹性队列后,可以实现资源共享。
公平调度策略:

队列间可以互相共享资源,如果权重高的任务来了,权重低的任务会分给权重高的任务部分资源,必要时,可kill掉权重低的任务。
Steady Fair Share(稳定的公平份额):
是Yarn根据每个队列的minShare、maxShare和weight的配置计算得到的理论上应该分配给这个队列的最大资源,它与这个队列当前是否有app正在运行无关,只和我们在fair-scheduler.xml中的配置有关。
Instantaneous Fair Share(瞬时的公平份额)
指的是实时动态分配的资源,它的值是随着集群资源的变动而实时变动的。
如果集群中有队列从active变为inactive,那么剩余这些队列瓜分到的instaneous fair shared都会随之变大,反之,如果有一个队列从inactive变为active,则剩余每个队列的instaneous fair share会随之变小,即instaneous fair share会变小。
2)配置公平调度策略
启用公平调度策略,配置属性yarn.resourcemanager.scheduler.class
<property>
<name>yarn.resourcemanager.scheduler.class</name>
<value>org.apache.hadoop.yarn.server.resourcemanager.scheduler.fair.FairScheduler</value>
<description>公平调度器</description>
</property>
队列配置,需要配置属性yarn.scheduler.fair.allocation.file
<property>
<name>yarn.scheduler.fair.allocation.file</name>
<value>fair-scheduler.xml</value>
<description>自定义XML配置文件所在位置,该文件主要用于描述各个队列的属性,比如资源量、权重等</description>
</property>
并在fair-scheduler.xml 文件中配置队列、用户、以及匹配规则等。
3)抢占
公平调度器支持抢占功能。
所谓抢占,就是允许调度器终止那些占用资源超过了其公平份额的队列的容器,这些容器资源释放后可以分配给资源数量低于应得份额的队列。
注意,抢占会降低整个集群的效率,因为被终止的containers 需要重新执行。
启用抢占,配置yarn-site.xml 的 yarn.scheduler.fair.preemption 属性
<property>
<name>yarn.scheduler.fair.preemption</name>
<value>true</value>
<description>是否支持抢占</description>
</property>
两个相关抢占超时设置
在fair-scheduler.xml 文件中配置,为所有队列设置默认的超时时间
<!-- 一个队列在该时间内获得的资源仍然低于其共享份额的一半,那么调度器会抢占其他容器,以秒计算 -->
<fairSharePreemptionTimeout>60</fairSharePreemptionTimeout>
<!-- 一个队列在该时间内未获得被承诺的最小共享资源,那么调度器会抢占其他容器,以秒计算 -->
<defaultMinSharePreemptionTimeout>60</defaultMinSharePreemptionTimeout>
yarn调度器的修改
修改配置的时候,在active状态的resourcemanager机器上修改fair-scheduler.xml 才生效。
tail -f yarn-hadoop-resourcemanager-nn1.hadoop.log 检测日志

vim fair-scheduler.xml 修改配置,
支持热加载模式,在服务运行的情况下,修改配置文件并使修改的配置生效。

检测日志查看自动加载过程
tail -f yarn-hadoop-resourcemanager-nn1.hadoop.log

修改完查看配置是否生效

根据队列的配置情况及yarn的配置情况, 显示出的队列信息。
本文详细介绍了YARN的调度策略,包括FIFO、容量调度和公平调度,重点讲解了公平调度中的稳定公平份额和瞬时公平份额,并讨论了抢占机制。同时,提供了启用公平调度和配置队列的方法,以及如何进行配置文件的热加载。

2148

被折叠的 条评论
为什么被折叠?



