首先在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个运用程序,那么可在自定义装备文件中进行如下设置:
- <allocations>
- <queuename=”queueA”>
- <minResources>100mb,100vcores</minResources>
- <maxResources>150mb,150vcores</maxResources>
- <maxRunningApps>200</maxRunningApps>
- <minSharePreemptionTimeout>300</minSharePreemptionTimeout>
- <weight>1.0</weight>
- <queuename=”queueB”>
- <minResources>30mb,30vcores</minResources>
- <maxResources>50mb,50vcores</maxResources>
- </queue>
- <queuename=”queueC”>
- <minResources>50mb,50vcores</minResources>
- <maxResources>50mb,50vcores</maxResources>
- </queue>
- </queue>
- <username=”userA”>
- <maxRunningApps>400</maxRunningApps>
- </user>
- <userMaxAppsDefault>40</userMaxAppsDefault>
- <fairSharePreemptionTimeout>6000</fairSharePreemptionTimeout>
- </allocations>
原文链接:http://dongxicheng.org/mapreduce-nextgen/hadoop-yarn-configurations-fair-scheduler/