Managed Service for Apache Spark 集群配置

在 Cloud Data Fusion 中,集群配置是指在 Managed Service for Apache Spark 上运行 Spark 作业时,如何定义数据处理流水线对计算资源的使用方式。本页介绍了集群配置的主要方法。

默认临时集群(推荐)

建议 Cloud Data Fusion 流水线使用默认集群。

  • Cloud Data Fusion 会为每次流水线执行自动预配和管理临时 Managed Service for Apache Spark 集群。它会在流水线开始运行时创建集群,然后在流水线运行完成后将其删除。
  • 临时集群的优势:
    • 简单性:您无需手动配置或管理集群。
    • 经济实惠:您只需为流水线执行期间使用的资源付费。

如需调整集群和优化性能,请参阅调整集群大小

静态集群(适用于特定场景)

在以下情况下,您可以使用静态集群:

  • 长时间运行的流水线:对于持续运行或长时间运行的流水线,静态集群比重复创建和拆除临时集群更具成本效益。
  • 集中式集群管理:如果您的组织需要集中控制集群创建和管理政策,则可以将静态集群与 Terraform 等工具搭配使用。
  • 集群创建时间:需要为每个流水线创建新集群所需的时间使您的用例受到限制时。

不过,静态集群需要进行更多手动配置,并且需要您自行管理集群生命周期。

如需使用静态集群,您必须在 Managed Service for Apache Spark 集群上设置以下属性

dataproc:dataproc.conscrypt.provider.enable=false
capacity-scheduler:yarn.scheduler.capacity.resource-calculator="org.apache.hadoop.yarn.util.resource.DefaultResourceCalculator"

静态集群的集群配置选项

如果您选择使用静态集群,Cloud Data Fusion 会提供以下方面的配置选项:

  • 工作器机器类型:指定集群中工作器节点的虚拟机类型。这决定了每个工作器的可用 vCPU 和内存。
  • 工作器数量:定义集群中的初始工作器节点数量。Managed Service for Apache Spark 仍可能会根据工作负载自动扩缩此数量。
  • 地区:选择集群的 Google Cloud 地区。位置可能会影响数据局部性和网络性能。
  • 其他配置:您可以为静态集群配置高级选项,例如抢占设置、网络设置和初始化操作。

最佳做法

为流水线创建静态集群时,请使用以下配置。

参数 说明
yarn.nodemanager.delete.debug-delay-sec 保留 YARN 日志。
建议值:86400(相当于一天)
yarn.nodemanager.pmem-check-enabled 启用 YARN,以检查物理内存限制,并在容器超出物理内存时终止容器。
推荐值:false
yarn.nodemanager.vmem-check-enabled 启用 YARN,以检查虚拟内存限制,并在容器超出物理内存时终止容器。
推荐值:false
dataproc.scheduler.driver-size-mb 如果主节点缺少足够的内存来运行驱动程序进程,则驱动程序的平均内存占用空间会导致 Managed Service for Apache Spark 将作业排入队列。这可能会影响作业并发性,但可以通过使用具有更多内存的主节点来缓解此问题。
建议值:2048

如需了解详情,请参阅针对现有 Managed Service for Apache Spark 集群运行流水线

重复使用集群

您可以在多次运行之间重复使用 Managed Service for Apache Spark 集群,以缩短处理时间。集群重用以类似于连接池或线程池的模型实现。任何集群在运行结束后都会保持运行一段指定的时间。当新运行开始时,系统会尝试查找与计算配置文件的配置匹配的可用空闲集群。如果存在,则使用该集群;否则,系统会启动新集群。

重复使用集群的注意事项

  • 集群不共享。与常规的临时集群配置模型类似,集群一次只能运行一个流水线运行。只有当集群处于空闲状态时,才能重复使用该集群
  • 如果您为所有运行启用集群重用,系统会根据需要创建处理所有运行所需的集群数量。与临时 Managed Service for Apache Spark 预配工具类似,无法直接控制创建的集群数量。您仍然可以使用 Google Cloud 配额来管理资源。例如,如果您运行 100 次运行,且最多并行运行 7 次,那么在给定时间点,您最多会有 7 个集群。
  • 只要不同的流水线使用相同的配置文件并共享相同的配置文件设置,它们就会重复使用集群。如果使用配置文件自定义,系统仍会重用集群,但前提是自定义完全相同,包括所有集群设置(例如集群标签)。

  • 启用集群重用后,主要有以下两个费用方面的考虑因素:

    • 用于集群启动和初始化的资源更少。
    • 集群在流水线运行之间以及最后一次流水线运行之后处于闲置状态时,会使用更多资源。

虽然很难预测集群重用的费用影响,但您可以采用一种策略来最大限度地节省费用。该策略旨在为链式流水线确定关键路径,并针对此关键路径启用集群重用。这样可确保集群立即得到重用,不会浪费任何空闲时间,并实现最大的性能优势。

启用集群重用

在已部署流水线配置的“计算配置”部分或创建新的计算配置文件时:

  • 启用跳过集群删除
  • 最大空闲时间是指集群等待下一个流水线重用它的最长时间。默认的最长空闲时间为 30 分钟。对于“最长空闲时间”,请考虑费用与集群可用性之间的权衡,以便重复使用集群。“空闲时间上限”的值越高,处于空闲状态的集群就越多,随时可以运行。

问题排查:版本兼容性

问题:Cloud Data Fusion 环境的版本可能与 Managed Service for Apache Spark 集群的版本不兼容。

建议:升级到最新版 Cloud Data Fusion,并使用受支持的 Managed Service for Apache Spark 版本之一。

早期版本的 Cloud Data Fusion 仅与不受支持的 Managed Service for Apache Spark 版本兼容。Managed Service for Apache Spark 不会为使用这些版本创建的集群提供更新和支持。虽然您可以继续运行使用不受支持的版本创建的集群,但我们建议将其替换为使用受支持的版本创建的集群。

Cloud Data Fusion 版本 Managed Service for Apache Spark 版本
6.11.1 2.3、2.2***、2.1
6.10.1.1 2.2***、2.1、2.0 *
6.10 2.1、2.0 *
6.9 2.1、2.0、1.5 *
6.7-6.8 2.0、1.5 *
6.4-6.6 2.0 *、1.3 **
6.1-6.3 1.3**

* Cloud Data Fusion 6.4 版及更高版本与 受支持的 Managed Service for Apache Spark 版本兼容。除非需要特定的操作系统功能,否则建议的做法是指定 major.minor 映像版本
如需指定 Managed Service for Apache Spark 集群中使用的操作系统版本,该操作系统版本必须与上表中 Cloud Data Fusion 支持的某个 Managed Service for Apache Spark 版本兼容。

** Cloud Data Fusion 6.1 版到 6.6 版与 不受支持的 Managed Service for Apache Spark 1.3 版兼容。

*** 此映像版本检测到某些 问题。此 Managed Service for Apache Spark 映像版本不建议用于生产环境。

问题排查:容器退出并显示非零退出代码 3

问题:未使用自动扩缩政策,静态 Managed Service for Apache Spark 集群遇到内存压力,导致日志中出现内存不足异常:Container exited with a non-zero exit code 3

建议:增加执行器内存。

通过向流水线添加 task.executor.system.resources.memory 运行时实参来增加内存。以下示例运行时实参将内存设置为 4096 MB:

"task.executor.system.resources.memory": 4096

如需了解详情,请参阅调整集群大小

后续步骤