YARN 三大调度器 之 Capacity Schedule 容器调度器

Capacity Schedule 

先上官网链接:https://hadoop.apache.org/docs/stable/hadoop-yarn/hadoop-yarn-site/CapacityScheduler.html

本帖基本来自官方文档~细改了翻译,字有点多,多为文字描述= =慢慢看

另一篇:YARN 三大调度器 之 Fair Schedule 公平调度器

概述

Hadoop的可插拔调度器,允许多租户安全地共享一个大集群,以便在分配容量的约束下及时为应用应 用程序分配资源。

被设计来以共享、多租户的形式运行hadoop应用程序,在友好规则下,能够更大限度地提高集群的吞 吐量和利用率。

Capacity Schedule调度器以队列为单位划分资源。简单通俗点来说,就是一个个队列有独立的资源, 队列的结构和资源是可以进行配置的,如下图:
YARN 三大调度器 之 Capacity Schedule 容器调度器_第1张图片

default队列占30%资源,analyst和dev分别占40%和30%资源;类似的,analyst和dev各有两个子队 列,子队列在父队列的基础上再分配资源。

队列以分层方式组织资源,设计了多层级别的资源限制条件以更好的让多用户共享一个Hadoop集群,比 如队列资源限制、用户资源限制、用户应用程序数目限制。队列里的应用以FIFO方式调度,每个队列可 设定一定比例的资源最低保证和使用上限,同时,每个用户也可以设定一定的资源使用上限以防止资源 滥用。而当一个队列的资源有剩余时,可暂时将剩余资源共享给其他队列。 

九个特性

Hierarchical Queues 分层队列;支持层级队列来确保资源在子队列间共享。

Capacity Guarantees 容量保证;所有提交到队列的的应用程序都将能保证获取到资源,管理员可以配置soft 和硬件资源分配到每个队列的限制。

Security 安全性;每个队列有严格的 ACLs权限控制,允许那些用户提交到某个队列,那些用户不能看看或者 修改其他人的应用等。

Elasticity弹性;弹性特性允许闲置资源能被任何队列分配到。

Multi-tenancy多租户;一系列全面的限制,防止单个应用程序、单用户和队列独占队列或集群的所 有资源,以确保集群不会不堪重负。

Operability 可操作性;

  • 运行时配置:运行时可以配置队列的定义、属性修改等操作,比如容量、acl修改
  • 作业保障:管理员停止队列时,保障正在运行的应用程序运行完成,保障其他新的应用程序不能提交到 队列或者子队列。

Resource-based Scheduling 基于资源调度;支持密集型资源应用程序,这种程序能够比默认的情 况下获取更多的资源。

Queue Mapping based on User or Group 基于用户或组的队列映射;允许用户根据用户或组将作业映射到指定的队列。

Priority Scheduling 优先级调度;允许以不同的优先级提交和调度应用程序,更大值则则证明应用程序优先级更 高。当前应用程序优先级仅支持FIFO排序策略。

调度器和队列配置

调度器配置

要配置ResourceManager以使用CapacityScheduler,请在conf / yarn-site.xml中设置以下属性:

属性
yarn.resourcemanager.scheduler.class org.apache.hadoop.yarn.server.resourcemanager.scheduler.capacity.CapacityScheduler

注意,yarn默认使用该队列,可参考默认配置文件中对应的属性。

队列配置

hadoop安装目录下的etc/hadoop/capacity-scheduler.xml 该配置文件是 CapacityScheduler 的配置文件。 

CapacityScheduler 有一个预定义队列叫root,系统中所有的队列是root队列的一个子队列。

更多的队列可以通过配置 yarn.scheduler.capacity.root.queues 该属性来配置,多个子队列 使用","来分割。

CapacityScheduler有一个概念叫queue path,是用来配置队列层级的,这个queue path是队列的 层级,使用root开始,然后用"."来进行连接。比如root.a。

队列的子队列可使用 yarn.scheduler.capacity..queues 来配置。除非另有申 明,否则子元素不能直接从父元素继承属性。 

配置例子:

如下是3个顶级子队列,分别为a,b,c,还有a和b有自己的子队列,配置如下:

 
    yarn.scheduler.capacity.root.queues
    a,b,c



    yarn.scheduler.capacity.root.a.queues
     a1,a2



    yarn.scheduler.capacity.root.b.queues
    b1,b2,b3

队列属性

属性太多太多太多太多太多了,想具体修改的童鞋去官网翻译一下吧- -

但大体分为以下几类

  • Resource Allocation(资源配置)
  • Running and Pending Application Limits(运行和依赖程序的限制)
  • Queue Administration & Permissions(队列管理和权限)
  • Queue Mapping based on User or Group(基于用户和组的应用程序队列映射)
  • Queue lifetime for applications(应用程序在队列中的生命周期)

配置实例

yarn-site.xml


    yarn.resourcemanager.scheduler.class                                       
    org.apache.hadoop.yarn.server.resourcemanager.scheduler.capacity.CapacityScheduler

件capacity-scheduler.xml


	yarn.scheduler.capacity.maximum-am-resource-percent
	0.1
	Maximum percent of resources in the cluster which can be used to run application masters i.e. controls number of concurrent running applications.



	yarn.scheduler.capacity.resource-calculator    org.apache.hadoop.yarn.util.resource.DefaultResourceCalculator
	The ResourceCalculator implementation to be used to compare Resources in the scheduler.The default i.e. DefaultResourceCalculator only uses Memory while DominantResourceCalculator uses dominant-resource to compare multi-dimensional resources such as Memory, CPU etc.




	yarn.scheduler.capacity.root.queues
	default,dev,pro
	The queues at the this level (root is the root queue).



	yarn.scheduler.capacity.root.default.capacity
	50
	Default queue target capacity.




	yarn.scheduler.capacity.root.dev.capacity
	20
	Default queue target capacity.



	yarn.scheduler.capacity.root.pro.capacity
	30
	Default queue target capacity.




	yarn.scheduler.capacity.root.default.user-limit-factor
	1
	Default queue user limit a percentage from 0.0 to 1.0.

 mv ./etc/hadoop/mapred-queues.xml.template ./etc/hadoop/mapred-queues.xml
 


	pro
	
	
	
	



	dev
	
	
	
	
	

将两个配置文件分发到各个服务器的配置目录中

重新启动集群start-all.sh

访问8080端口,即可看到每个队列中容器具体解释

你可能感兴趣的:(Hadoop,#,YARN)