Dataproc Spark 性能增强功能

本文档介绍了如何启用 Dataproc Spark 性能增强功能,以帮助 Dataproc Spark 作业在更短的时间内处理更多数据,同时降低费用。

Dataproc Spark 性能增强功能包括:

  • Spark 优化器增强功能:
    • 为优化 Spark 方案而编写的优化器规则
    • 改进了在 Spark 作业中使用 Dataproc BigQuery 连接器时的性能
  • Spark 执行增强功能:
    • Spark 执行引擎改进

其他 Dataproc 性能改进:请参阅 Dataproc 集群缓存,这有助于缩短访问 Cloud Storage 中的数据所花费的时间。

您可以在集群上或 Spark 作业上启用 Spark 性能增强功能:

价格

Spark 性能增强功能不会产生额外费用。您需要按标准 Dataproc on Compute Engine 价格付费。

注意事项

Spark 性能增强功能会调整 Spark 属性,包括以下属性:

  • spark.sql.shuffle.partitions:对于 2.2 映像版本集群,Spark 性能增强功能会将此属性设置为 1000。此设置可能会导致小型作业速度变慢。
  • spark.dataproc.sql.catalog.file.index.stats.enabled:如果 Hive 分区数量较多,此设置可能会导致驱动程序 OOM(内存不足)情况。停用此属性可以解决 OOM 情况。

在创建集群时启用增强功能

在使用映像版本 2.0.69+、2.1.17+、2.2.0+ 及更高映像版本创建 Dataproc 集群时,您可以使用 Google Cloud 控制台、Google Cloud CLI 和 Dataproc API 启用 Dataproc Spark 性能增强功能。

控制台

  1. 在 Google Cloud 控制台中,打开 Dataproc 创建集群页面。
  2. 创建 Dataproc 集群表单上,点击 Compute Engine 上的集群行中的创建
  3. 在 Compute Engine 上创建 Dataproc 集群页面上,点击自定义集群面板,然后滚动到集群属性部分。
    1. 如需启用 Spark 优化增强功能,请执行以下操作:
      1. 点击 + 添加属性
      2. 前缀列表中选择 spark,然后在字段中添加“spark.dataproc.enhanced.optimizer.enabled”,并在字段中添加“true”。
    2. 如需启用 Spark 执行增强功能,请执行以下操作:
      1. 点击 + 添加属性
      2. 前缀列表中选择 spark,然后在字段中添加“spark.dataproc.enhanced.execution.enabled”,并在字段中添加“true”。
  4. 填写或确认其他集群创建字段,然后点击创建

gcloud

  1. 在终端窗口或 Cloud Shell 中以本地方式运行以下 gcloud dataproc clusters create 命令。

    gcloud dataproc clusters create CLUSTER_NAME \
        --project=PROJECT_ID \
        --region=REGION \
        --image-version=IMAGE \
        --properties=PROPERTIES
    

    注意:

    • CLUSTER_NAME:集群名称(在项目中必须是唯一的)。该名称必须以小写字母开头,最多可包含 51 个小写字母、数字和连字符,不能以连字符结尾。已删除集群的名称可以再次使用。
    • PROJECT_ID:要与集群关联的项目。
    • REGION:集群所在的 Compute Engine 区域,例如 us-central1
      • 您可以添加可选的 --zone=ZONE 标志,以在指定区域内指定可用区,例如 us-central1-a。如果您未指定可用区,Dataproc 自动选择可用区功能会在指定区域内选择可用区。
    • IMAGE:Dataproc Spark 优化器和执行性能增强功能适用于 Dataproc 映像版本 2.0.69+2.1.17+ 及更高版本。如果您省略此标志,Dataproc 会为集群选择默认 Dataproc on Compute Engine 映像的最新次要版本(请参阅默认 Dataproc 映像版本)。
    • PROPERTIES

      • 如需启用 Spark 优化增强功能,请指定:
      spark:spark.dataproc.enhanced.optimizer.enabled=true
      
      • 如需启用 Spark 执行增强功能,请指定:
      spark:spark.dataproc.enhanced.execution.enabled=true
      
      • 如需启用 Spark 优化和执行增强功能,请指定:
      spark:spark.dataproc.enhanced.optimizer.enabled=true,spark:spark.dataproc.enhanced.execution.enabled=true
      

API

  1. clusters.create 请求中指定以下 SoftwareConfig.properties

    • 如需启用 Spark 优化增强功能,请指定:
    "spark:spark.dataproc.enhanced.optimizer.enabled": "true"
    
    • 如需启用 Spark 执行增强功能,请指定:
    "spark:spark.dataproc.enhanced.execution.enabled": "true"
    
    • 如需启用 Spark 优化和执行增强功能,请指定:
    "spark:spark.dataproc.enhanced.optimizer.enabled": "true","spark:spark.dataproc.enhanced.execution.enabled": "true"
    

在提交作业时启用或停用增强功能

您可以使用 Google Cloud 控制台、Google Cloud CLI 和 Dataproc API 启用或停用提交给 Dataproc 服务的 Spark 作业的 Spark 性能增强功能。

控制台

  1. 在 Google Cloud 控制台中,打开 Dataproc 作业页面。
  2. 作业页面上,点击提交作业,然后滚动到作业的属性部分。
    1. 如需启用 Spark 优化增强功能,请执行以下操作:
      1. 点击 + 添加属性。 在字段中添加“spark.dataproc.enhanced.optimizer.enabled”,并在字段中添加“true”。
    2. 如需启用 Spark 执行增强功能,请执行以下操作:
      1. 点击 + 添加属性
      2. 字段中添加“spark.dataproc.enhanced.execution.enabled”,并在字段中添加“true”。
  3. 填写或确认其他作业提交字段,然后点击提交

gcloud

  1. 在终端窗口或 Cloud Shell 中以本地方式运行以下 gcloud dataproc jobs submit 命令。

    gcloud dataproc jobs submit SPARK_JOB_TYPE \
        --cluster=CLUSTER_NAME \
        --region=REGION \
        --properties=PROPERTIES
    

    注意:

    • SPARK_JOB_TYPE:指定 sparkpysparkspark-sqlspark-r
    • CLUSTER_NAME:作业将在其中运行的集群的名称。
    • REGION:集群所在的区域。
    • PROPERTIES

      • 如需启用 Spark 优化增强功能,请指定:
      spark.dataproc.enhanced.optimizer.enabled=true
      
      • 如需启用 Spark 执行增强功能,请指定:
      spark.dataproc.enhanced.execution.enabled=true
      
      • 如需启用 Spark 优化和执行增强功能,请指定:
      spark.dataproc.enhanced.optimizer.enabled=true,spark.dataproc.enhanced.execution.enabled=true
      

API

  1. jobs.submit 请求中,为 SparkJobPySparkJobSparkSqlJobSparkRJob 指定以下 properties

    • 如需启用 Spark 优化增强功能,请指定:
    "spark.dataproc.enhanced.optimizer.enabled=true"
    
    • 如需启用 Spark 执行增强功能,请指定:
    "spark.dataproc.enhanced.execution.enabled=true"
    
    • 如需启用 Spark 优化和执行增强功能,请指定:
    "spark.dataproc.enhanced.execution.enabled=true,spark.dataproc.enhanced.optimizer.enabled=true"