这是CDP中Yarn使用系列中的一篇,之前的文章请参考<使用YARN Web UI和CLI>、<CDP 中配置Yarn的安全性>和<CDP的Yarn资源调度与管理>。
YARN Queue Manager 是 Apache Hadoop YARN Capacity Scheduler 的队列管理图形用户界面。您可以使用 YARN 队列管理器 UI 来管理集群容量,使用队列来平衡来自不同用户的多个应用程序的资源需求。使用 YARN 队列管理器 UI,您可以设置调度程序级别属性和队列级别属性。
您可以使用 YARN 队列管理器 UI 查看、排序、搜索和过滤队列。队列管理器存储以前更改的历史记录,并提供在“概览”和“调度程序配置”选项卡中查看每个版本更改的功能。以前的版本将处于只读模式,您必须选择最新版本才能进行更改。
YARN 中调度的基本单位是队列。每个队列的容量指定可用于提交到队列的应用程序的集群资源的百分比。容量调度器队列可以按层次结构设置,以反映使用集群资源的各种组织、组和用户所需的数据库结构、资源要求和访问限制。
例如,假设一家公司有三个组织:工程、支持和营销。工程组织有两个子团队:开发和质量保证。支持组织有两个子团队:培训和服务。最后,营销组织分为销售和广告。下图显示了此示例的队列层次结构:
每个子队列都绑定到其父队列,顶级的“支持”、“工程”和“营销”队列将绑定到“根”队列。
如果在安装集群后将YARN Queue Manager服务添加到集群中,则必须 在 Yarn Configuration选项卡中配置YARN Queue Manager依赖项。
您可以从 Yarn 队列管理器 UI向名为root的预定义队列添加队列。容量调度程序有一个名为 root 的预定义队列。系统中的所有队列都是根队列的子队列。每个子队列都绑定到其父队列,但除非另有说明,否则子队列不会直接从父队列继承属性。
您可以按照相同的步骤继续添加更多父队列和子队列。
您可以使用队列来管理集群容量,以平衡来自不同用户的多个应用程序的资源需求。
您可以使用容量调度程序通过 FIFO(先进先出)队列共享集群资源。
您可以通过使用相对模式指定容量百分比或使用绝对模式指定 vCore 和内存的实际单位或总容量的分数来配置队列。如果您要升级集群,权重模式是默认模式。如果您是全新安装和配置集群,则相对模式是默认模式。您可以将分配模式更改为绝对模式。
如果集群中的节点有可用容量,您可以将应用程序提交到队列层次结构中多个级别的不同队列。由于总集群容量可能会有所不同,因此容量配置值使用百分比、单位或分数表示。
您可以指定容量属性以将集群容量的浮点百分比值分配给队列。以下配置以 6:1:3 的比例(60%、10% 和 30%)划分“工程”、“支持”和“营销”组织之间的集群资源。
要根据上述示例指定容量属性,请执行以下操作:
您可以指定以 MiB 为单位的内存容量和队列的核心数。如果总内存单位为 16384 MiB 和 16 个核心,并且“工程”、“支持”和“营销”组织之间的集群资源分配如下:
组织 | 内存 | Core数 |
---|---|---|
工程 | 9830 | 10 |
支持 | 1638 | 2 |
营销 | 4916 | 4 |
要根据上述示例指定容量属性,请执行以下操作:
您可以以总资源的分数来指定容量。根据队列的权重与父项下配置的权重总和的关系来划分资源。以下配置按总资源的 6:1:3(6/10、1/10 和 3/10)比例划分“工程”、“支持”和“营销”组织之间的集群资源。
要根据上述示例指定容量属性,请执行以下操作:
您可以通过在 Yarn 队列管理器 UI 中编辑队列属性来从根队列更改资源分配模式。在 相对的资源分配模式是默认的分配方式。您可以使用绝对分配模式指定 vCore 和内存资源的实际单位,或使用相对分配模式指定总资源的百分比。
注意
YARN 中的队列可以处于两种状态:RUNNING 或 STOPPED。RUNNING 状态表示队列可以接受应用程序提交,而 STOPPED 队列不接受应用程序提交。任何已配置队列的默认状态都是 RUNNING。
在容量调度器中,可以停止父队列和叶队列。对于要在任何叶队列中接受的应用程序,层次结构中一直到根队列的所有队列都必须运行。这意味着如果父队列停止,则该层次结构中的所有后代队列都处于非活动状态,即使它们自己的状态是 RUNNING。
管理员可以出于多种原因使用停止和排空队列中的应用程序的功能,例如在停用队列并将其用户迁移到其他队列时。管理员可以在运行时停止队列,这样当当前的应用程序运行完成时,不会接受新的应用程序。现有应用程序可以继续运行,直到它们完成运行,因此队列可以优雅地排空,而不会对最终用户产生任何影响。
您必须先停止队列,然后才能删除队列。如果层次结构中的所有队列都停止,您可以删除单个队列以及父队列及其子队列。
在Capacity Scheduler 中,父队列、子队列和根队列都可以停止。对于要在任何子队列中接受的应用程序,层次结构中一直到根队列的所有队列都必须运行。这意味着如果父队列停止,则该层次结构中的所有后代队列都处于非活动状态,即使它们自己的状态是 RUNNING。
注意
如果队列与一个或多个分区相关联,则在删除队列之前,您必须首先使用该队列的所有分区的“编辑子队列”将分区容量设置为零。
您可以使用删除队列及其子队列选项来删除父队列及其子队列。
注意
与放置规则关联的队列无法删除,直到其关联的放置规则被删除。
原文链接:https://docs.cloudera.com/cdp-private-cloud-base/latest/yarn-allocate-resources/topics/yarn-allocating-resources-with-the-capacity-scheduler.html