Yarn在全局级别配置调度程序属性

简介: 您可以配置调度程序属性来定义所有队列的行为。所有父队列和子队列都继承使用调度程序属性设置的属性。

这是CDP中Yarn使用手册系列的一篇。之前的文章请参考《Apache Hadoop Yarn概述》、《CDP中使用YARN Web UI和CLI》、《CDP中配置Apache Hadoop Yarn的安全性》、《CDP中Yarn资源调度与管理》、《CDP中Yarn管理队列》。

您可以配置调度程序属性来定义所有队列的行为。所有父队列和子队列都继承使用调度程序属性设置的属性。

Cloudera Manager 中,您可以使用调度程序配置选项卡来配置调度程序属性。

1.   Cloudera Manager 中,选择集群> YARN 队列管理器UI 服务。

图片 1.png

2.   YARN Queue Manager 窗口中,单击Scheduler Configuration选项卡。

图片 2.jpg

3.   Scheduler Configuration窗口中,输入属性的值并单击Save

图片 3.png

1     设置全局最大应用优先级

您可以使用优先级调度以更高的优先级运行 YARN 应用程序,而不管集群中已经运行的其他应用程序如何。YARN 将更多资源分配给以更高优先级运行的应用程序,而不是那些以较低优先级运行的应用程序。优先级调度使您能够在提交时和运行时动态设置应用程序的优先级。

优先级调度仅适用于 FIFO(先进先出)排序策略。FIFO 是默认的容量调度程序排序策略。

要设置应用程序优先级(yarn.cluster.max-application-priority),请执行以下操作:

1.   Cloudera Manager 中,选择集群> YARN 队列管理器UI 服务。图形队列层次结构显示在概览选项卡中。

2.   单击调度程序配置选项卡。

3.   在最大应用程序优先级文本框中输入优先级。

4.   点击保存。

2    配置抢占

抢占允许较高优先级的应用程序抢占较低优先级的应用程序。

可能会发生这样的情况:队列具有保证级别的集群资源,但必须等待运行应用程序,因为其他队列正在使用所有可用资源。如果启用抢占,则优先级较高的应用程序不必等待,因为优先级较低的应用程序已占用可用容量。当您启用抢占 ( yarn.resourcemanager.scheduler.monitor.enable )时,服务不足的队列几乎可以立即开始声明其分配的集群资源,而无需等待其他队列的应用程序完成运行。

您可以使用优先级调度以更高的优先级运行 YARN 应用程序,而不管集群中已经运行的其他应用程序如何。有关更多信息,请参阅设置全局最大应用程序优先级

要在所有队列上配置队列抢占选项,请执行以下操作:

1.   Cloudera Manager 中,选择Clusters > YARN Queue Manager UI服务。图形队列层次结构显示在概览 选项卡中。

2.  单击调度程序配置选项卡。

3.  选中启用监控策略复选框。

4.  指定 org.apache.hadoop.yarn.server.resourcemanager.monitor.capacity.ProportionalCapacityPreemptionPolicy 作为监控策略文本框中使用的监控策略

5.  配置所需的抢占属性:

o  抢占:仅观察- 选中该复选框以运行策略,但不会影响具有抢占和终止事件的集群。

o  抢占:监控间隔 (ms) -调用此策略之间的时间(以毫秒为单位)。将此值设置为较长的时间间隔会导致容量监视器的运行频率降低。

o  Preemption: Maximum Wait Before Kill (ms) - 从应用程序请求抢占和终止容器之间的时间(以毫秒为单位。将此设置为更高的值可使应用程序有更多时间响应抢占请求并优雅地释放容器。

o  抢占:每轮总资源- 在单轮中被抢占的最大资源百分比。您可以使用此值来限制从集群中回收容器的速度。在计算所需的总抢占后,策略将其缩放回此限制。

o  Preemption: Over Capacity Tolerance - 为抢占而忽略的超出目标容量的最大资源量。默认值为 0.1,这意味着资源管理器仅在队列超出其保证容量 10% 时才开始抢占队列。这避免了资源轮换和积极抢占。

o  Preemption: Maximum Termination Factor - 每个队列的每个周期被抢占的抢占目标容量的最大百分比。您可以增加此值以加快资源回收。

6.  点击保存。

3    启用队列内抢占

队列内抢占防止队列中的资源不平衡。

队列内抢占有助于根据配置的用户限制或应用程序优先级在队列内有效分配资源。

要在所有队列上配置队列内抢占(yarn.resourcemanager.monitor.capacity.preemption.intra-queue-preemption.enabled),请执行以下操作:

1.        Cloudera Manager 中,选择集群> YARN 队列管理器UI 服务。图形队列层次结构显示在概览选项卡中。

2.        单击调度程序配置选项卡。

3.        选中启用队列内抢占复选框。

4    设置全局应用限制

为避免由于无法管理的负载(由恶意用户或意外引起)导致系统崩溃,容量调度程序使您能够对并发活动(正在运行和待处理)应用程序的总数设置静态、可配置的限制任何时候。

您可以使用此配置属性设置最大应用程序限制 ( yarn.scheduler.capacity.maximum-applications )。默认值为 10,000

1.   Cloudera Manager 中,选择集群> YARN 队列管理器UI 服务。图形队列层次结构显示在概览选项卡中。

2.   单击调度程序配置选项卡。

3.   在最大应用程序 文本框中输入最大应用程序限制。

4.   点击保存

5     设置默认应用程序主资源限制

Application Master (AM) 资源限制,可用于设置专门分配给 Application Master 的集群资源的最大百分比。该属性的默认值为 10%,存在是为了避免跨应用程序死锁,其中集群中的重要资源完全被运行 ApplicationMaster 的容器占用。

最大 AM 资源限制 ( yarn.scheduler.capacity.maximum-am-resource-percent )属性还间接控制集群中并发运行的应用程序数量,每个队列限制为与其容量成比例的运行应用程序数量。

1.   Cloudera Manager 中,选择集群> YARN 队列管理器 UI 服务。图形队列层次结构显示在概览选项卡中。

2.  单击调度程序配置选项卡。

3.  在最大 AM 资源限制 文本框中输入最大 AM 资源限制。

4.  点击保存。

6    启用异步调度程序

异步调度器将CapacityScheduler调度与节点心跳解耦。这显着改善了延迟。

要启用异步调度(yarn.scheduler.capacity.schedule-asynchronously.enable),请执行以下操作:

1.   Cloudera Manager 中,选择集群> YARN 队列管理器UI 服务。图形队列层次结构显示在概览选项卡中。

2.   单击调度程序配置选项卡。

3.   选中启用异步调度程序复选框。

4.   点击保存。

7    使用 Cloudera Manager 配置队列映射以使用来自应用程序标签的用户名

您可以将队列映射配置为使用应用程序标记中的用户名,而不是提交作业的代理用户。

当用户运行 Hive 查询时,HiveServer2提交从最终用户而不是 Hive 用户映射的队列中的查询。例如,当用户alicedoAs=false模式提交Hive 查询时,作业将作为hive用户在YARN 中运行 。如果启用了基于应用程序标签的调度,则作业将根据用户alice的队列映射配置放置到目标队列中 

有关队列映射配置的更多信息,请参阅管理放置规则。有关 Hive 访问的信息,请参阅Apache Hive文档。

1.   Cloudera Manager 中,选择YARN服务。

2.   单击配置选项卡。

3.   搜索ResourceManager。在Scope Filters 窗格下,选择ResourceManager

4.   yarn-site.xmlResourceManager高级配置片段(安全阀)中添加以下内容:

a.   启用该application-tag-based-placement属性以根据使用应用程序标签传递的用户 ID 启用应用程序放置。

名称:yarn.resourcemanager.application-tag-based-placement.enable

值:true

说明:设置为“true”以根据使用应用程序标签传递的用户 ID 启用应用程序放置。当它被启用时,它会检查 userid=<userId> 模式,如果找到,应用程序将被放入找到的用户的队列中,如果原始用户对传递的用户队列具有所需的权限。

b.   在许可名单中添加可以使用基于应用程序标签的展示位置的用户列表。当提交的用户包含在许可名单中时,应用程序将被放置到yarn.scheduler.capacity.queue-mappings应用程序标签中为用户定义的属性中定义的队列中。如果没有定义用户,则将使用提交用户。

名称:yarn.resourcemanager.application-tag-based-placement.username.whitelist

值:

说明:如果启用了“yarn.resourcemanager.application-tag-based-placement.enable”,则逗号分隔的用户列表可以使用基于应用程序标签的放置。

5.   重新启动ResourceManager服务以应用更改。

8    配置 NodeManager 心跳

您可以控制在每个 NodeManager 心跳中可以分配多少个容器。

要为所有队列配置 NodeManager 心跳,请执行以下操作:

1.   Cloudera Manager 中,选择Clusters > YARN Queue Manager UI 服务。图形队列层次结构显示在概览选项卡中。

2.   单击调度程序配置选项卡。

3.   选中Enable Multiple Assignments Per Heartbeat复选框以允许在一个 NodeManager heartbeat 中进行多个容器分配。

4.   配置以下 NodeManager 心跳属性:

o   每个心跳的最大容器分配- 在一个 NodeManager 心跳中可以分配的最大容器数。将此值设置为 -1 将禁用此限制。

o   每个心跳的最大关闭开关分配- 在一个NodeManager 心跳中可以分配的最大关闭开关容器数。

5.   点击保存

9    配置数据本地化

容量调度器利用延迟调度来满足任务局部性约束。局部约束分为三个级别:节点本地、机架本地和关闭开关。当不能满足局部性时,调度器会计算错过的机会数量,并等待此计数达到阈值,然后再将局部性约束放宽到下一个级别。您可以使用Node Locality Delay ( yarn.scheduler.capacity.node-locality-delay ) Rack Locality Additional Delay ( yarn.scheduler.capacity.rack-locality-additional-delay ) 字段配置此阈值。

要配置数据局部性,请执行以下操作:

1.   Cloudera Manager 中,选择Clusters > YARN Queue Manager UI 服务。图形队列层次结构显示在概览选项卡中。

2.   单击调度程序配置选项卡。

3.   Node Locality Delay文本框中,输入可能错过的调度机会数。

容量调度程序仅在错过此数量的机会后才尝试调度机架本地容器。您必须确保此数量与集群中的节点数量相同。

4.   Rack Locality Additional Delay文本框中,输入错过的调度机会的数量,在 Node Locality Delay 之后,Capacity Scheduler 应尝试调度关闭开关容器。

值为 -1 表示根据公式L * C / N计算该值,其中L是资源请求中指定的位置(节点或机架)数量,C是请求的容器数量,N是集群的大小。

5.   点击保存

原文链接:https://docs.cloudera.com/cdp-private-cloud-base/latest/yarn-allocate-resources/topics/yarn-configure-scheduler-properties.html

 

目录
相关文章
|
8月前
|
资源调度 JavaScript Windows
yarn install命令运行报错:无法将“yarn”项识别为 cmdlet、函数、脚本文件或可运行程序的名称。...
yarn install命令运行报错:无法将“yarn”项识别为 cmdlet、函数、脚本文件或可运行程序的名称。...
570 1
yarn install命令运行报错:无法将“yarn”项识别为 cmdlet、函数、脚本文件或可运行程序的名称。...
|
2月前
|
SQL 分布式计算 资源调度
Hadoop Yarn 配置多队列的容量调度器
配置Hadoop多队列容量调度器,编辑`capacity-scheduler.xml`,新增`hive`队列,`default`队列占总内存40%,最大60%;`hive`队列占60%,最大80%。配置包括队列容量、用户权限和应用生存时间等,配置后使用`yarn rmadmin -refreshQueues`刷新队列,无需重启集群。多队列配置可在Yarn WEB界面查看。
|
15天前
|
资源调度 JavaScript iOS开发
yarn的安装与配置(Windows/macOS)
yarn的安装与配置(Windows/macOS)
76 0
|
2月前
|
资源调度 前端开发 JavaScript
nvm,npm,yarn相关指令,前端配置准备
nvm,npm,yarn相关指令,前端配置准备
18 1
|
2月前
|
资源调度 分布式计算 监控
剖析剖析我们的Yarn程序-Client提交
剖析剖析我们的Yarn程序-Client提交
25 0
|
2月前
|
消息中间件 SQL 资源调度
实时计算 Flink版产品使用合集之 Flink on YARN 中使用滚动日志时配置不生效如何解决
实时计算Flink版作为一种强大的流处理和批处理统一的计算框架,广泛应用于各种需要实时数据处理和分析的场景。实时计算Flink版通常结合SQL接口、DataStream API、以及与上下游数据源和存储系统的丰富连接器,提供了一套全面的解决方案,以应对各种实时计算需求。其低延迟、高吞吐、容错性强的特点,使其成为众多企业和组织实时数据处理首选的技术平台。以下是实时计算Flink版的一些典型使用合集。
|
2月前
|
资源调度 前端开发 JavaScript
够啦!前端Yarn配置和命令
够啦!前端Yarn配置和命令
51 0
|
2月前
|
分布式计算 资源调度 Hadoop
Hadoop【环境搭建 02】【hadoop-3.1.3 单机版YARN】(配置、启动及验证)
Hadoop【环境搭建 02】【hadoop-3.1.3 单机版YARN】(配置、启动及验证)
35 0
|
2月前
|
分布式计算 资源调度 Hadoop
Hadoop【部署 02】hadoop-3.1.3 单机版YARN(配置、启动停止shell脚本修改及服务验证)
Hadoop【部署 02】hadoop-3.1.3 单机版YARN(配置、启动停止shell脚本修改及服务验证)
82 0
|
2月前
|
资源调度 分布式计算 Hadoop
Yarn【关于配置yarn-site.xml的注意事项】
Yarn【关于配置yarn-site.xml的注意事项】