自动调节 Spark 工作负载

由于 Spark 配置选项数量众多,并且难以评估这些选项对工作负载的影响,因此对 Spark 工作负载进行优化以提升性能和弹性可能并非易事。Dataproc Serverless 自动调节功能可根据 Spark 优化最佳实践和分析工作负载运行情况,自动将 Spark 配置设置应用于周期性 Spark 工作负载,从而提供手动工作负载配置的替代方案。

注册 Dataproc 无服务器自动扩缩

如需注册访问本页介绍的 Dataproc 无服务器自动扩缩预览版,请填写并提交 BigQuery 中的 Gemini 预览版注册表单。表单获得批准后,表单中列出的项目就可以使用预览功能了。

优势

Dataproc 无服务器的自动调节功能具有以下优势:

  • 提升效果:进行优化调整以提升效果
  • 优化速度更快:自动配置可避免耗时的手动配置测试
  • 提高弹性:自动分配内存,以避免与内存相关的故障

限制

Dataproc 无服务器自动调节具有以下限制:

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

自动调节同类群组

自动调节适用于批处理工作负载(称为“同类群组”)的周期性执行。您在提交工作负载时指定的同类群组名称会将其标识为周期性工作负载的连续运行之一。我们建议您使用符合以下条件的同类群组名称:描述工作负载的类型,或有助于将工作负载的运行标识为周期性工作负载的一部分。例如,指定 TPCH-Query1 作为运行每日 TPC-H 查询的计划工作负载的同类群组名称。

自动调节场景

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

  • MEMORY:自动调整 Spark 内存分配,以预测并避免潜在的工作负载内存不足错误。修复之前因内存不足 (OOM) 错误而失败的工作负载。
  • 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 查询的计划工作负载的同类群组名称。
    • 自动调节场景:用于优化工作负载的一个或多个自动调节场景,例如 BHJMEMORYSCALING。您可以在每次批量提交同类群组时更改场景选择。
  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:用于优化工作负载的一个或多个自动调节场景,例如 BHJMEMORYSCALING。每次批量提交同类群组时,您都可以更改场景列表。

示例:

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

查看自动调节更改

如需查看批量工作负载的 Dataproc 无服务器自动扩缩更改,请运行 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 控制台的批处理详情页面的调查标签页下,查看应用于正在运行的、已完成或失败的工作负载的最新自动调节更改。

自动调节调查面板。