在 Cloud Data Fusion 中,集群配置是指定义数据处理流水线在 Dataproc 上运行 Spark 作业时如何利用计算资源。本页介绍了集群配置的主要方法。
默认的临时集群(推荐)
对于 Cloud Data Fusion 流水线,建议使用默认集群。
- Cloud Data Fusion 会为每次流水线执行自动预配和管理临时 Dataproc 集群。它会在流水线开始运行时创建集群,然后在流水线运行完成后将其删除。
- 暂时性集群的优势:
- 简单:您无需手动配置或管理集群。
- 性价比:您只需为流水线执行期间使用的资源付费。
如需调整集群和优化性能,请参阅调整集群大小。
静态集群(适用于特定场景)
在以下情况下,您可以使用静态集群:
- 长时间运行的流水线:对于持续运行或长时间运行的流水线,使用静态集群可能比反复创建和拆解临时集群更经济实惠。
- 集中集群管理:如果贵组织需要集中控制集群创建和管理政策,则可以将静态集群与 Terraform 等工具搭配使用。
- 集群创建时间:需要为每个流水线创建新集群所需的时间使您的用例受到限制时。
不过,静态集群需要进行更多手动配置,并且需要您自行管理集群生命周期。
如需使用静态集群,您必须在 Dataproc 集群上设置以下属性:
dataproc:dataproc.conscrypt.provider.enable=false
静态集群的集群配置选项
如果您选择使用静态集群,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 集群运行流水线。
重复使用集群
您可以在运行作业之间重复使用 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.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** |
major.minor
映像版本。如需指定 Dataproc 集群中使用的操作系统版本,该操作系统版本必须与上表中适用于 Cloud Data Fusion 的某个 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
如需了解详情,请参阅调整集群大小。