Dataproc 集群配置

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

默认临时集群(推荐)

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

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

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

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

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

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

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

如需使用静态集群,您必须在 Dataproc 集群上设置以下属性

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

静态集群的集群配置选项

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

  • 工作器机器类型:指定集群中工作器节点的虚拟机类型。这决定了每个工作器的可用 vCPU 和内存。
  • 工作器数量:定义集群中的初始工作器节点数量。Dataproc 仍可能会根据工作负载自动扩缩此数量。
  • 地区:选择集群的 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 如果主节点的内存不足以运行驱动程序进程,Dataproc 会根据驱动程序的平均内存占用量将作业排入队列。这可能会影响作业并发性,但可以通过使用具有更多内存的主节点来缓解此问题。
推荐值:2048

如需了解详情,请参阅针对现有 Dataproc 集群运行流水线

重复使用集群

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

重复使用集群的注意事项

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

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

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

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

启用集群重用

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

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

问题排查:版本兼容性

问题:Cloud Data Fusion 环境的版本可能与 Dataproc 集群的版本不兼容。

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

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

Cloud Data Fusion 版本 Dataproc 版本
6.11.1 2.3
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 版及更高版本与 受支持的 Dataproc 版本兼容。除非需要特定的操作系统功能,否则建议的做法是指定 major.minor 映像版本
如需指定 Dataproc 集群中使用的操作系统版本,该操作系统版本必须与上表中 Cloud Data Fusion 支持的某个 Dataproc 版本兼容。

** Cloud Data Fusion 6.1 版到 6.6 版与 不受支持的 Dataproc 1.3 版兼容。

*** 此映像版本检测到某些 问题。不建议将此 Dataproc 映像版本用于生产用途。

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

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

建议:增加执行器内存。

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

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

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

后续步骤