相对模式下容量调度器的FAIR策略的微调

2022-12-02 21:01:16 浏览数 (2)

FS迁移CS后如何在相对模式下微调 CDP 容量调度其配置

Cloudera Data Platform (CDP)统一了Cloudera Enterprise Data Hub (CDH)和Hortonworks Data Platform (HDP)的技术。基于详细和仔细的分析,遗留平台(HDP 和 CDH)中存在的一些功能被其他替代方案取代。CDH 用户会使用 Fair Scheduler (FS),而 HDP 用户会使用 Capacity Scheduler (CS)。在彻底分析了遗留平台中可用的 YARN调度器后,Cloudera 选择了 Capacity Scheduler 作为 CDP 支持的 YARN调度器。我们现在已经合并了两个调度器之间的功能,最大限度地减少了对 CDH 用户正在经历这个转换的影响。

在之前的博客文章CDP 的四种路径和选择升级或迁移路径中,我们介绍了将旧平台迁移到 CDP 的整体业务和技术问题。在CDH 到 CDP和HDP 到 CDP升级博客文章中,我们介绍了升级的整体技术过程,并提供了每个旧发行版的视频演示。在本博客中,我们将重点转移到在从 CDH 升级或迁移到 CDP 时应特别注意的特定领域。

为了更轻松地从 CDH 升级到 CDP,Cloudera 提供了fs2cs 转换实用程序。作为 Cloudera Manager 中升级集群向导的一部分,此实用程序会自动将某些 Fair Scheduler 配置转换为 Capacity Scheduler 配置。Capacity Scheduler 的某些功能是独一无二的,在 Fair Scheduler 中没有对应的映射。因此,fs2cs转换实用程序无法将每个 Fair Scheduler 配置转换为相应的 Capacity Scheduler 配置。(此类配置的示例将在本文档的后面部分讨论。)在fs2cs之后工具用于调度器属性的初始转换,需要进行一些手动微调以确保生成的调度配置适合您组织的内部资源分配目标和工作负载 SLA。

此博客列出了升级到 CDP 后需要微调的容量调度器的某些配置,以模仿升级前的一些公平调度器行为。此微调可让您将 CDP 容量调度器设置与之前在公平调度器中设置的阈值相匹配。在 CDP Private Cloud Base 7.1.6 中,引入了一种称为“权重模式”的新附加模式,用于将资源分配给队列。本博客重点介绍所有版本的 CDP 私有云基础中存在的遗留的“相对模式”,用于将资源分配给队列。

Cloudera的 fs2cs 转换实用程序

有关fs2cs转换实用程序、其内部工作方式、示例和限制的详细信息,请参阅Cloudera 之前的这篇博客文章。

有关调度器转换过程的详细说明,包括将 YARN 设置从 Fair Scheduler 迁移到 Capacity Scheduler,请参阅Cloudera 升级文档。

调度器配置:快速回顾

CDH 中的公平调度器

  • 使用指定的权重计算每个队列的公平资源的份额
  • 每次创建新队列时都会重新计算所有队列的公平份额
    • 有关公平份额计算的更多详细信息,请参阅此博客
  • 为“最大资源”配置设置的值是硬限制
  • 为“最大运行应用程序”配置设置的值是硬限制
  • FS 不允许您对单个用户设置资源限制
    • 一个用户最多可以使用队列的最大硬限制资源

HDP 中的容量调度器

  • 配置容量用于计算每个队列的容量
    • 每个父队列的所有子队列的配置容量总和应为 100%
  • 为每个队列指定的最大容量是硬限制
  • 为每个队列配置的最大应用程序是硬限制
  • CS 提供选项来控制对队列中不同用户的资源分配
  • “用户限制因子”控制单个用户在队列中可以消耗的最大资源数量
    • 值为 1 表示用户可以消耗队列的全部配置容量
    • 大于 1 的值允许用户超出配置的容量
    • 小于 1 的值(例如 0.5)允许用户仅获得配置容量的那一部分
    • 为此配置设置的值是硬限制
    • 此配置的值设置为队列配置容量的倍数
    • 有关用户限制因子的更多信息,请参阅设置用户限制
  • “最小用户百分比”是单个用户在请求期间应该获得的最小资源量
    • 这是一个软限制

调度器比较:来自遗留平台

下表对 CDH 中的公平调度器和 HDP 中的容量调度器中的一些功能进行了快速并排比较。

公平调度器 (CDH)

容量调度器 (HDP)

基于权重:自动公平份额计算

基于百分比容量或基于绝对资源配置

添加新队列时,动态重新计算所有队列的公平份额

添加新子队列时,需要重新配置同一父队列下的兄弟队列(如果有)的容量

队列的硬限制为“最大资源”设置的值为“最大运行应用程序”设置的值

队列的硬限制为每个队列定义的“最大容量”为每个队列配置“最大应用程序”

没有在队列中的用户之间定义资源限制的选项

以下配置可用于定义队列内用户之间的资源分配“用户限制因子”硬限制“最小用户百分比”软限制

CDP 中容量调度器的新功能

以下是 CDP 中容量调度器的一些新增功能:

  • 容量调度器在 CDP 中支持三种资源分配模式:
    • 相对:基于总资源的百分比(与 HDP 相同)
    • Absolute:基于硬件属性的绝对值,例如内存或 vCore
    • 权重:基于总资源的分数(如 CDH 中的加权队列)

有关这些资源分配模式的更多信息,请查看我们的资源分配概述。

  • 动态队列调度:CDP Private Cloud Base 7.1.7 中的技术预览
    • 在运行时自动创建
    • 重启 YARN 服务会删除所有动态创建的队列
    • 基于资源分配模式,动态队列的管理方式不同。
    • 有关动态队列的更多信息,请参阅 Cloudera 文档

示例:使用 fs2cs 转换实用程序

作为 Cloudera Manager 中升级集群向导的一部分,您可以使用fs2cs转换实用程序将某些 Fair Scheduler 配置自动转换为 Capacity Scheduler 配置。有关fs2cs的使用详情,请参阅 Cloudera 官方文档。此工具还可用于在 CDH 到 CDP 边车迁移期间生成容量调度器配置。

  1. 从 Cloudera Manager 下载 Fair Scheduler 配置文件
  2. 使用fs2cs转换实用程序自动转换资源池的结构
  3. 上传生成的Capacity Scheduler配置文件,将配置保存在Cloudera Manager中:

CDH 的公平调度器配置:升级前

例如,让我们考虑为 CDH 中的 Fair Scheduler 定义的以下动态资源池配置。

CDP相对模式下的容量调度器:升级后

作为升级到 CDP 的一部分,fs2cs转换实用程序将公平调度器配置转换为容量调度器中相应的相对模式。以下屏幕截图显示了 YARN 队列管理器中生成的相对模式容量调度器配置。

观察(在 CS 的相对模式下)

  • 在使用fs2cs转换实用程序进行转换后,所有队列的最大容量都配置为 100% 。
    • 在 FS 中,一些队列使用绝对值配置了“最大资源”,这些是硬限制
    • 因此,在迁移到 CDP 中的 CS 之后,CDH 中的 FS 中存在的基于“最大资源”的队列硬限制需要进行一些微调
    • 在 CS 中,最大容量基于父队列,而在 FS 中,“最大资源”配置为全局限制
  • 在使用fs2cs转换实用程序进行转换后,所有队列的用户限制因子都设置为 1(这是默认值) 。
    • 将此值设置为 1 意味着一个用户最多只能使用队列的配置容量
    • 如果单个用户需要超出配置的容量并使用到其最大容量,则需要调整此值
    • 在 CDH 中,许多应用程序一直使用单个租户(用户 ID)在集群上运行它们的作业。在这些情况下,用户限制因子的默认设置为 1 可能意味着即使集群有可用容量,作业也会进入挂起状态。
  • 特定队列中的排序策略。
    • 容量调度器支持特定队列中的两种作业排序策略,FIFO(先进先出)或FAIR。排序策略是基于每个队列配置的。容量调度器中的默认排序策略是 FIFO,用于添加任何新队列。但是对于使用fs2cs转换的队列,如果在相应的公平调度器配置中使用 DRF 作为调度策略,则排序策略将设置为“FAIR”。要将队列的排序策略切换为“FAIR”,请在 YARN 队列管理器中编辑队列属性并更新“ yarn.scheduler.capacity.<queue-path>.ordering-policy”的值。“

手动微调(在 CS 的相对模式下)

如前所述, Fair Scheduler 和 Capacity Scheduler 的所有配置没有完全的一对一的映射。应在 CDP 容量调度器中进行一些手动配置更改,以模拟一些 CDH 公平调度器设置。例如,我们可以微调 CDP 容量调度器中的最大容量,以使用最大资源设置之前在 CDH 公平调度器中定义的一些硬限制。此外,在 CDH 中,没有选项可以限制队列中单个用户的资源消耗,因此一个用户可以消耗队列中的全部资源。在这种情况下,需要在 CDP 容量调度器中调整用户限制因素的配置,以允许单个用户超出配置的容量并达到队列的最大容量。

我们可以使用下面列出的计算作为起点,在相对模式下微调 CDP 容量调度器。这为之前在 Fair Scheduler 中定义的用户创建了具有类似容量限制的环境。

计算是使用 YARN 和 CDH Fair Scheduler 中定义的设置完成的。

  • 配置容量
    • 配置容量 = Round([{在公平调度器中为此队列配置权重} / {所有兄弟队列的所有权重总和} * 100]) ,结果保留 2 位数
  • 最大容量– 如果最大资源在 Fair Scheduler 中定义为 vCore 和内存的绝对值
    • 最大容量 = Round(max([{在 Fair Scheduler 中为此队列配置的最大 vCores} / {Total vCores for YARN} * 100], [{在 Fair Scheduler 中为此队列配置的最大内存} / {为 YARN 配置的总内存} * 100])) ,结果保留 2 位数
  • 最大容量– 如果最大资源被定义为公平调度器中 vCore 和内存的通用百分比
    • 最大容量 = 在公平调度器中为此队列定义的最大资源的常用百分比
  • 最大容量– 如果最大资源在 Fair Scheduler 中定义为 vCore 和内存的单独百分比
    • 最大容量 = Max(为此队列的公平调度器中 vCore 的最大资源定义的百分比,为此队列的公平调度器中内存的最大资源定义的百分比)
  • 用户限制因子
    • 用户限制因子 = Round({calculated max capacity for this queue in Capacity Scheduler} / {configured capacity for this queue in Capacity Scheduler}) ,结果保留 2 位数

微调调度器比较(CS 的相对模式下)

升级到 CDP 后,我们可以使用上面建议的计算以及之前在 CDH 公平调度器中提供的配置来微调 CDP 容量调度器。这种微调工作模拟了 CDP 容量调度器中的一些以前的 CDH 公平调度器设置。如果您的环境和用例不需要此类模拟,请放弃此微调练习。在这种情况下,具有新容量调度器的升级 CDP 环境提供了一个理想的环境,可以从头开始重新访问和调整一些 YARN 队列资源分配。

下面提供了上面示例中使用的 CDH 公平调度器和微调 CDP 容量调度器的并排比较。

总结

Capacity Scheduler 是 CDP Private Cloud Base 中默认且受支持的 YARN调度器。从 CDH 升级或迁移到 CDP Private Cloud Base 时,从 Fair Scheduler 到 Capacity Scheduler 的迁移是使用fs2cs转换实用程序自动完成的。从 CDP Private Cloud Base 7.1.6 开始,fs2cs转换实用程序转换为容量调度器中的新权重模式。在 CDP 私有云基础的早期版本中,fs2cs实用程序转换为容量调度器中的相对模式。由于 Fair Scheduler 和 Capacity Scheduler 之间的功能差异,所有配置的直接一对一映射是不可能的。在本博客中,我们介绍了一些计算,可用作手动微调的起点,以将相对模式下的 CDP 容量调度器设置与之前在公平调度器中设置的阈值相匹配。后续博客文章将介绍权重模式下 CDP 容量调度器的类似微调。

要了解有关 CDP 中容量调度器的更多信息,以下是一些有用的资源:

公平调度器与容量调度器的比较

CDP 资源调度和管理

升级到 CDP

原文作者:Kiran Anand 和Divya MN

原文链接:https://blog.cloudera.com/fine-tune-fair-to-capacity-scheduler-in-relative-mode/

0 人点赞