Hadoop YARN配置参数剖析(4)—Fair Scheduler相关参数

开发 前端 Hadoop
首先在yarn-site.xml中,将配置参数yarn.resourcemanager.scheduler.class设置为org.apache.hadoop.yarn.server.resourcemanager.scheduler.fair.FairScheduler。

首先在yarn-site.xml中,将配置参数yarn.resourcemanager.scheduler.class设置为org.apache.hadoop.yarn.server.resourcemanager.scheduler.fair.FairScheduler

Fair Scheduler的配置选项包括两部分,其中一部分在yarn-site.xml中,主要用于配置调度器级别的参数,另外一部分在一个自定义配置文件(默认是fair-scheduler.xml)中,主要用于配置各个队列的资源量、权重等信息。

想要了解Fair Scheduler是什么,可阅读我的这篇文章“Hadoop公平调度器分析”

1. 配置文件yarn-site.xml

(1) yarn.scheduler.fair.allocation.file :自定义XML配置文件所在位置,该文件主要用于描述各个队列的属性,比如资源量、权重等,具体配置格式将在后面介绍。

(2)  yarn.scheduler.fair.user-as-default-queue:当应用程序未指定队列名时,是否指定用户名作为应用程序所在的队列名。如果设置为false或者未设置,所有未知队列的应用程序将被提交到default队列中,默认值为true。

(3)  yarn.scheduler.fair.preemption:是否启用抢占机制,默认值是false。

(4)  yarn.scheduler.fair.sizebasedweight:在一个队列内部分配资源时,默认情况下,采用公平轮询的方法将资源分配各各个应用程序,而该参数则提供了另外一种资源分配方式:按照应用程序资源需求数目分配资源,即需求资源数量越多,分配的资源越多。默认情况下,该参数值为false。

(5)  yarn.scheduler.assignmultiple:是否启动批量分配功能。当一个节点出现大量资源时,可以一次分配完成,也可以多次分配完成。默认情况下,该参数值为false。

(6)  yarn.scheduler.fair.max.assign:如果开启批量分配功能,可指定一次分配的container数目。默认情况下,该参数值为-1,表示不限制。

(7)  yarn.scheduler.fair.locality.threshold.node:当应用 程序请求某个节点上资源时,它可以接受的可跳过的***资源调度机会。当按照分配策略,可将一个节点上的资源分配给某个应用程序时,如果该节点不是应用程序 期望的节点,可选择跳过该分配机会暂时将资源分配给其他应用程序,直到出现满足该应用程序需的节点资源出现。通常而言,一次心跳代表一次调度机会,而该参 数则表示跳过调度机会占节点总数的比例,默认情况下,该值为-1.0,表示不跳过任何调度机会。

(8)  yarn.scheduler.fair.locality.threshold.rack:当应用程序请求某个机架上资源时,它可以接受的可跳过的***资源调度机会。

(9)  yarn.scheduler.increment-allocation-mb:内存规整化单位,默认是1024,这意味着,如果一个Container请求资源是1.5GB,则将被调度器规整化为ceiling(1.5 GB / 1GB) * 1G=2GB。

(10)  yarn.scheduler.increment-allocation-vcores:虚拟CPU规整化单位,默认是1,含义与内存规整化单位类似。

2. 自定义配置文件

Fair Scheduler允许用户将队列信息专门放到一个配置文件(默认是fair-scheduler.xml),对于每个队列,管理员可配置以下几个选项:

(1)  minResources :最少资源保证量,设置格式为“X mb, Y vcores”,当一个队列的最少资源保证量未满足时,它将优先于其他同级队列获得资源,对于不同的调度策略(后面会详细介绍),最少资源保证量的含义不 同,对于fair策略,则只考虑内存资源,即如果一个队列使用的内存资源超过了它的最少资源量,则认为它已得到了满足;对于drf策略,则考虑主资源使用 的资源量,即如果一个队列的主资源量超过它的最少资源量,则认为它已得到了满足。

(2)  maxResources:最多可以使用的资源量,fair scheduler会保证每个队列使用的资源量不会超过该队列的最多可使用资源量。

(3)  maxRunningApps:最多同时运行的应用程序数目。通过限制该数目,可防止超量Map Task同时运行时产生的中间输出结果撑爆磁盘。

(4)  minSharePreemptionTimeout:最小共享量抢占时间。如果一个资源池在该时间内使用的资源量一直低于最小资源量,则开始抢占资源。

(5)  schedulingMode/schedulingPolicy:队列采用的调度模式,可以是fifo、fair或者drf。

(6)  aclSubmitApps:可向队列中提交应用程序的Linux用户或用户组列表,默认情况下为“*”,表示任何用户均可以向该队列提交应用程序。需要注意的是,该属性具有继承性,即子队列的列表会继承父队列的列表。配置该属性时,用户之间或用户组之间用“,”分割,用户和用户组之间用空格分割,比如“user1, user2 group1,group2”。

(7)  aclAdministerApps:该队列的管理员列表。一个队列的管理员可管理该队列中的资源和应用程序,比如可杀死任意应用程序。

管理员也可为单个用户添加maxRunningJobs属性限制其最多同时运行的应用程序数目。此外,管理员也可通过以下参数设置以上属性的默认值:

(1)  userMaxJobsDefault:用户的maxRunningJobs属性的默认值。

(2) defaultMinSharePreemptionTimeout :队列的minSharePreemptionTimeout属性的默认值。

(3)  defaultPoolSchedulingMode:队列的schedulingMode属性的默认值。

(4)  fairSharePreemptionTimeout:公平共享量抢占时间。如果一个资源池在该时间内使用资源量一直低于公平共享量的一半,则开始抢占资源。

】假设要为一个Hadoop集 群设置三个队列queueA、queueB和queueC,其中,queueB和queueC为queueA的子队列,且规定普通用户最多可同时运行40 个应用程序,但用户userA最多可同时运行400个应用程序,那么可在自定义配置文件中进行如下设置:

  1. <allocations> 
  2.   <queue name=”queueA”> 
  3.     <minResources>100 mb, 100 vcores</minResources> 
  4.     <maxResources>150 mb, 150 vcores</maxResources> 
  5.     <maxRunningApps>200</maxRunningApps> 
  6.     <minSharePreemptionTimeout>300</minSharePreemptionTimeout> 
  7.     <weight>1.0</weight> 
  8.     <queue name=”queueB”> 
  9.        <minResources>30 mb, 30 vcores</minResources> 
  10.        <maxResources>50 mb, 50 vcores</maxResources> 
  11.     </queue> 
  12.     <queue name=”queueC”> 
  13.       <minResources>50 mb, 50 vcores</minResources> 
  14.       <maxResources>50 mb, 50 vcores</maxResources> 
  15.     </queue> 
  16.   </queue> 
  17.   <user name=”userA”> 
  18.     <maxRunningApps>400</maxRunningApps> 
  19.   </user> 
  20.   <userMaxAppsDefault>40</userMaxAppsDefault> 
  21.   <fairSharePreemptionTimeout>6000</fairSharePreemptionTimeout> 
  22. </allocations> 

原文链接:http://dongxicheng.org/mapreduce-nextgen/hadoop-yarn-configurations-fair-scheduler/

责任编辑:陈四芳 来源: dongxicheng.org
相关推荐

2014-01-07 17:18:51

HadoopYARN

2014-01-07 15:23:15

HadoopYARN

2014-01-07 15:05:25

HadoopYARN

2014-01-07 15:17:08

YARN配置

2021-01-29 08:22:03

调度器Yarn架构

2023-01-09 08:38:22

大数据架构师YARN

2011-02-23 10:21:18

ProFTPd参数

2010-01-27 13:38:29

C++ Sum函数

2014-02-14 15:30:18

HadoopYARN

2009-12-25 16:51:37

ADO参数

2010-01-04 14:54:08

ADO参数

2010-02-25 13:40:17

WCF禁用安全配置

2010-11-29 13:33:00

sybase配置参数

2010-09-25 13:31:00

TomcatJVM

2010-01-12 11:47:09

VB.NET可选参数

2010-03-29 16:31:48

2010-02-25 13:54:48

WCF安全参数

2010-01-06 15:16:58

Ubuntu启动流程

2009-09-18 10:18:30

CLR Via

2023-03-13 23:48:31

二进制包ES
点赞
收藏

51CTO技术栈公众号