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