自动调整 Spark 工作负载

由于 Spark 配置选项的数量众多,并且难以评估这些选项对工作负载的影响,因此针对性能和弹性优化 Spark 工作负载可能非常具有挑战性。Dataproc 无服务器自动扩缩功能可根据 Spark 优化最佳实践和工作负载运行的分析,自动将 Spark 配置设置应用于周期性 Spark 工作负载,从而提供手动工作负载配置的替代方案。

注册 Dataproc 无服务器自动扩缩

如需注册以访问本页介绍的 Dataproc Serverless 预览版,请填写并提交 BigQuery 预览版中的 Genmini 注册表单。表单获得批准后,表单中列出的项目就可以使用预览版功能。

优势

Dataproc 无服务器自动扩缩功能具有以下优势:

  • 提升效果:通过优化来提升性能
  • 加快优化速度:自动配置,避免耗时的手动配置测试
  • 提高弹性:自动分配内存以避免与内存相关的故障

限制

Dataproc 无服务器自动扩缩功能具有以下限制:

  • 系统会计算自动调整并将其应用于工作负载的第二次及后续运行。周期性工作负载的首次运行不会自动调优,因为 Dataproc Serverless 自动调整使用工作负载历史记录进行优化。
  • 不支持缩减内存大小。
  • 自动扩缩不会追溯应用于正在运行的工作负载,只会应用于新提交的工作负载同类群组。

自动调整同类群组

自动调整应用于批量工作负载(称为“同类群组”)的周期性执行。您在提交工作负载时指定的同类群组名称会将其标识为周期性工作负载的连续运行之一。我们建议您使用描述工作负载类型的同类群组名称,或者使用其他有助于识别属于周期性工作负载一部分的工作负载运行情况的同类群组名称。例如,将 TPCH-Query1 指定为运行每日 TPC-H 查询的计划工作负载的同类群组名称。

自动调整场景

您可以选择以下一个或多个自动调整场景,将 Dataproc 无服务器自动扩缩应用于工作负载:

  • OOM:自动调优 Spark 内存分配,以修复先前因内存不足 (OOM) 错误而失败的工作负载。
  • MEMORY:自动调优 Spark 内存分配,以预测和避免潜在的工作负载内存不足错误。
  • SCALING:自动调优 Spark 自动扩缩配置设置。
  • BHJ:自动调优 Spark 配置设置以优化 SQL 广播联接性能。

价格

在预览版期间,提供 Dataproc 无服务器自动扩缩功能,无需额外付费。适用标准 Dataproc 无服务器价格

区域可用性

您可以对在可用的 Compute Engine 区域中提交的批次使用 Dataproc 无服务器自动扩缩。

使用 Dataproc 无服务器自动扩缩

您可以使用 Google Cloud 控制台、Google Cloud CLI 或 Dataproc API 为工作负载启用 Dataproc 无服务器自动扩缩。

控制台

如需在每次提交周期性批量工作负载时启用 Dataproc 无服务器自动扩缩,请执行以下步骤:

  1. 在 Google Cloud 控制台中,转到 Dataproc 批处理页面。

    转到 Dataproc 批次

  2. 如需创建批量工作负载,请点击创建

  3. 容器部分中,为 Spark 工作负载填写以下字段:

    • 同类群组:同类群组名称,用于将批量标识为一系列周期性工作负载中的一个。自动调整应用于使用此同类群组名称提交的第二个及后续工作负载。例如,将 TPCH-Query1 指定为运行每日 TPC-H 查询的计划工作负载的同类群组名称。
    • 自动调整场景:用于优化工作负载的一个或多个自动调整场景,例如 OOMMEMORYSCALING。您可以在每次批量提交同类群组时更改场景选择。
  4. 根据需要填写创建批次页面的其他部分,然后点击提交。如需详细了解这些字段,请参阅提交批量工作负载

gcloud

如需在每次提交周期性批量工作负载时启用 Dataproc 无服务器自动扩缩,请在终端窗口或 Cloud Shell 中本地运行以下 gcloud CLI gcloud dataproc batches submit 命令。

gcloud dataproc batches submit COMMAND \
    --region=REGION \
    --cohort=COHORT \
    --autotuning-scenarios=SCENARIOS \
    other arguments ...

替换以下内容:

  • COMMAND:Spark 工作负载类型,例如 SparkPySparkSpark-SqlSpark-R
  • REGION:将运行工作负载的区域
  • COHORT:同类群组名称,用于将批次标识为一系列周期性工作负载中的一个。自动调整应用于使用此同类群组名称提交的第二个及后续工作负载。例如,将 TPCH Query 1 指定为运行每日 TPC-H 查询的计划工作负载的同类群组名称。
  • SCENARIOS:用于优化工作负载的一个或多个以英文逗号分隔的自动扩缩场景,例如 --autotuning-scenarios=OOM,MEMORY,SCALING。每次批量提交同类群组时,您都可以更改场景列表。

API

如需在每次提交周期性批量工作负载时启用 Dataproc 无服务器自动扩缩,请提交包含以下字段的 batches.create 请求:

  • RuntimeConfig.cohort:同类群组名称,用于将批量标识为一系列周期性工作负载中的一个。自动调整应用于使用此同类群组名称提交的第二个及后续工作负载。例如,将 TPCH-Query1 指定为运行每日 TPC-H 查询的计划工作负载的同类群组名称。
  • AutotuningConfig.scenarios:用于优化工作负载的一个或多个自动扩缩场景,例如 OOMMEMORYSCALING。每次批量提交同类群组时,您都可以更改场景列表。

示例:

...
runtimeConfig:
  cohort: TPCH-Query1
  autotuningConfig:
    scenarios:
    - OOM
    - MEMORY
    - SCALING
...

查看自动调整更改

如需查看对批量工作负载的 Dataproc Serverless 自动调整更改,请运行 gcloud dataproc batches describe 命令。

示例:gcloud dataproc batches describe 输出类似于以下内容:

...
runtimeInfo:
   propertiesInfo:
    # Properties set by autotuning.
    autotuningProperties
      spark.driver.memory:
        annotation: Driver OOM was detected
        value: 11520m
      spark.driver.memoryOverhead:
        annotation: Driver OOM was detected
        value: 4608m
    # Old overwritten properties.
    userProperties
...

您还可以在 Google Cloud 控制台的批量详情页面的调查标签页下,查看应用于正在运行、已完成或失败的工作负载的最新自动调整更改。

自动调整调查面板。