Hadoop YARN配置参数剖析(5)—Capacity Scheduler相关参数

Capacity Scheduler是YARN中默认的资源调度器。

想要了解Capacity Scheduler是什么,可阅读我的这篇文章“Hadoop Capacity Scheduler分析”。

在Capacity Scheduler的配置文件中,队列queueX的参数Y的配置名称为yarn.scheduler.capacity.queueX.Y,为了简单起见,我们记为Y,则每个队列可以配置的参数如下:

1.  资源分配相关参数

(1)  capacity:队列的资源容量(百分比)。 当系统非常繁忙时,应保证每个队列的容量得到满足,而如果每个队列应用程序较少,可将剩余资源共享给其他队列。注意,所有队列的容量之和应小于100。

(2)  maximum-capacity:队列的资源使用上限(百分比)。由于存在资源共享,因此一个队列使用的资源量可能超过其容量,而最多使用资源量可通过该参数限制。

minimum-user-limit-percent:每个用户***资源保障(百分比)。任何时刻,一个队列中每个用户可使用的资源量均有一定的限制。当一个队列中同时运行多个用户的应用程序时中,每个用户的使用资源量在一个最小值和***值之间浮动,其中,最小值取决于正在运行的应用程序数目,而***值则由minimum-user-limit-percent决定。比如,假设minimum-user-limit-percent为25。当两个用户向该队列提交应用程序时,每个用户可使用资源量不能超过50%,如果三个用户提交应用程序,则每个用户可使用资源量不能超多33%,如果四个或者更多用户提交应用程序,则每个用户可用资源量不能超过25%。

(3)  user-limit-factor:每个用户最多可使用的资源量(百分比)。比如,假设该值为30,则任何时刻,每个用户使用的资源量不能超过该队列容量的30%。

2.  限制应用程序数目相关参数

(1)  maximum-applications :集群或者队列中同时处于等待和运行状态的应用程序数目上限,这是一个强限制,一旦集群中应用程序数目超过该上限,后续提交的应用程序将被拒绝,默认值为 10000。所有队列的数目上限可通过参数yarn.scheduler.capacity.maximum-applications设置(可看做默认 值),而单个队列可通过参数yarn.scheduler.capacity.<queue-path>.maximum- applications设置适合自己的值。

(2)  maximum-am-resource-percent:集群中用于运行应用程序 ApplicationMaster的资源比例上限,该参数通常用于限制处于活动状态的应用程序数目。该参数类型为浮点型,默认是0.1,表示10%。所 有队列的ApplicationMaster资源比例上限可通过参数yarn.scheduler.capacity. maximum-am-resource-percent设置(可看做默认值),而单个队列可通过参数 yarn.scheduler.capacity.<queue-path>. maximum-am-resource-percent设置适合自己的值。

3.  队列访问和权限控制参数

(1)  state 队列状态可以为STOPPED或者 RUNNING,如果一个队列处于STOPPED状态,用户不可以将应用程序提交到该队列或者它的子队列中,类似的,如果ROOT队列处于STOPPED 状态,用户不可以向集群中提交应用程序,但正在运行的应用程序仍可以正常运行结束,以便队列可以优雅地退出。

(2)  acl_submit_applications:限定哪些Linux用户/用户组可向给定队列中提交应用程序。需要注意的是,该属性具有继承性,即如果一个用户可以向某个队列中提交应用程序,则它可以向它的所有子队列中提交应用程序。配置该属性时,用户之间或用户组之间用“,”分割,用户和用户组之间用空格分割,比如“user1, user2 group1,group2”。

(3)  acl_administer_queue:为队列指定一个管理员,该管理员可控制该队列的所有应用程序,比如杀死任意一个应用程序等。同样,该属性具有继承性,如果一个用户可以向某个队列中提交应用程序,则它可以向它的所有子队列中提交应用程序。

一个配置文件实例如下:

 
 
 
  1. <configuration> 
  2.   <property> 
  3.     <name>yarn.scheduler.capacity.maximum-applications</name> 
  4.     <value>10000</value> 
  5.     <description>最多可同时处于等待和运行状态的应用程序数目</description> 
  6.   </property> 
  7.   
  8.   <property> 
  9.     <name>yarn.scheduler.capacity.maximum-am-resource-percent</name> 
  10.     <value>0.1</value> 
  11.     <description>集群中可用于运行application master的资源比例上限,这通常用于限制并发运行的应用程序数目。</description> 
  12.   </property> 
  13.   
  14.   <property> 
  15.     <name>yarn.scheduler.capacity.root.queues</name> 
  16.     <value>default</value> 
  17.     <description>root队列的所有子队列,该实例中只有一个</description> 
  18.   </property> 
  19.   
  20.   <property> 
  21.     <name>yarn.scheduler.capacity.root.default.capacity</name> 
  22.     <value>100</value> 
  23.     <description>default队列的资源容量</description> 
  24.   </property> 
  25.   
  26.   <property> 
  27.     <name>yarn.scheduler.capacity.root.default.user-limit-factor</name> 
  28.     <value>1</value> 
  29.     <description> 
  30.      每个用户可使用的资源限制 
  31.     </description> 
  32.   </property> 
  33.   
  34.   <property> 
  35.     <name>yarn.scheduler.capacity.root.default.maximum-capacity</name> 
  36.     <value>100</value> 
  37.     <description> 
  38.       Default队列可使用的资源上限. 
  39.     </description> 
  40.   </property> 
  41.   
  42.   <property> 
  43.     <name>yarn.scheduler.capacity.root.default.state</name> 
  44.     <value>RUNNING</value> 
  45.     <description> 
  46.      Default队列的状态,可以是RUNNING或者STOPPED. 
  47.     </description> 
  48.   </property> 
  49.   
  50.   <property> 
  51.     <name>yarn.scheduler.capacity.root.default.acl_submit_applications</name> 
  52.     <value>*</value> 
  53.     <description> 
  54.       限制哪些用户可向default队列中提交应用程序. 
  55.     </description> 
  56.   </property> 
  57.   
  58.   <property> 
  59.     <name>yarn.scheduler.capacity.root.default.acl_administer_queue</name> 
  60.     <value>*</value> 
  61.     <description> 
  62. 限制哪些用户可管理default队列中的应用程序,“*”表示任意用户 
  63. </description> 
  64.   </property> 
  65.   
  66.   <property> 
  67.     <name>yarn.scheduler.capacity.node-locality-delay</name> 
  68.     <value>-1</value> 
  69.     <description>调度器尝试调度一个rack-local container之前,最多跳过的调度机会,通常而言,该值被设置成集群中机架数目,默认情况下为-1,表示不启用该功能。 
  70.     </description> 
  71.   </property> 
  72. </configuration> 

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

免责声明:文章内容不代表本站立场,仅供读者参考。产品相关技术问题请发送工单。 本文链接:https://www.idc.net/help/386232/

为您推荐

开源数据收集引擎 Logstash 讲解和示例讲解

一、概述 Logstash 是一个开源的数据收集和日志处理工具,它是 Elastic Stack(ELK Stack)的一部分,用于从各种数据源中采集、转换和传输数据,以帮助分析和可视化大规模数据。Logstash 通常与 Elasticsearch 和 Ki...

八个开源免费单点登录(SSO)系统

单点登录(SSO)是一个登录服务层,通过一次登录访问多个应用。使用SSO服务可以提高多系统使用的用户体验和安全性,用户不必记忆多个密码、不必多次登录浪费时间。 下面推荐一些市场上最好的开源SSO系统,可作为商业SSO替代。 1.Authelia https://github.com/authelia/authelia ...

浅谈HBase数据结构和系统架构

Part 01 LSM树模型 常见的的关系型数据库,如MySQL、SQL Server、Oracle等,使用B+ Tree作为数据存储与索引的基本结构,非叶子节点只存放索引数据,叶子节点存放所有数据和指向相邻节点的指针,具有高效的范围查询和稳定的查找效率,以及具有较小的读放大和空间放大。采用磁盘随机读写方式,且以磁盘数...

微软Radius平台重构现代应用程序部署

微软的 Azure 孵化团队日前推出一个叫 Radius 的新应用平台。Radius 平台可用于在 Kubernetes、公共云和边缘环境中运行各种现代应用程序。 Radius 是一个开源项目,最初支持的应用程序运行时包括Kubernetes、Azure和AWS,以后还会支持诸如谷歌云平台等云环境。 Mark Russ...

Ext JS3.0正式版发布

Ext JS3.0在经历数次RC版之后,extjs.com终于发布3.0的正式版。总体而言,较2.0改进不大,依然还是原理的组件模型,具体更新及改进如下: ◆提供了参照DWR后与后台的通讯包Direct,支持具有明显的REST风格的CRUD服务 ◆一系列的新的组件和例子,包括有图表(Charting, By YUI F...
返回顶部