Spark 属性

Dataproc Serverless 使用 Spark 属性来确定要分配给批量工作负载的计算、内存和磁盘资源。以下媒体资源设置可能会影响工作负载配额用量和费用(如需了解详情,请参阅 Dataproc 无服务器配额Dataproc 无服务器价格)。

设置 Spark 批量工作负载属性

使用 Google Cloud 控制台、gcloud CLI 或 Dataproc API 提交 Dataproc Serverless Spark 批量工作负载时,您可以指定 Spark 属性。

控制台

  1. 转到 Google Cloud 控制台中的 Dataproc 创建批次页面。

  2. 属性部分,点击添加属性,然后输入受支持的 Spark 属性Key(名称)和 Value

gcloud

gcloud CLI 批量提交示例:

gcloud dataproc batches submit spark
    --properties=spark.checkpoint.compress=true \
    --region=region \
    other args ...

API

batches.create 请求中,使用受支持的 Spark 属性设置 RuntimeConfig.properties

支持的 Spark 属性

Dataproc Serverless for Spark 支持大多数 Spark 属性,但它不支持与 YARN 和 shuffle 相关的 Spark 属性,例如 spark.master=yarnspark.shuffle.service.enabled。如果 Spark 应用代码设置 YARN 或 shuffle 属性,则应用将失败。

运行时环境属性

Dataproc Serverless for Spark 支持以下自定义 Spark 属性来配置运行时环境:

属性 说明
spark.dataproc.driverEnv.EnvironmentVariableName EnvironmentVariableName 添加到驱动程序进程。您可以指定多个环境变量。

资源分配属性

Dataproc Serverless for Spark 支持以下 Spark 属性来配置资源分配:

属性 说明 默认 示例
spark.driver.cores 要分配给 Spark 驱动程序的核心 (vCPU) 数量。 有效值:4816 4
spark.driver.memory

要分配给 Spark 驱动程序进程的内存量,以带有大小单位后缀(“m”“g”或“t”)的 JVM 内存字符串格式指定。

每个驱动程序核心的总驱动程序内存,包括驱动程序内存开销,对于标准计算层级,该内存必须介于 1024m7424m 之间(对于高级计算层级,此总内存为 24576m)。例如,如果 spark.driver.cores = 4,则 4096m <= spark.driver.memory + spark.driver.memoryOverhead <= 29696m

512m2g
spark.driver.memoryOverhead

要分配给 Spark 驱动程序进程的附加 JVM 内存量,以带有大小单位后缀(“m”“g”或“t”)的 JVM 内存字符串格式指定。

这是与 JVM 开销、内部字符串和其他原生开销关联的非堆内存,包括其他驱动程序进程使用的内存,如 PySpark 驱动程序进程和容器中运行的其他非驱动程序进程使用的内存。 运行驱动程序的容器的最大内存大小由 spark.driver.memoryOverheadspark.driver.memory 之和确定。

对于标准计算层级,每个驱动程序核心的总驱动程序内存(包括驱动程序内存开销)必须介于 1024m7424m 之间(对于高级计算层级,则为 24576m)。例如,如果 spark.driver.cores = 4,则 4096m <= spark.driver.memory + spark.driver.memoryOverhead <= 29696m

10% 的驱动程序内存,但 PySpark 批量工作负载除外,该工作负载默认为驱动程序内存的 40% 512m2g
spark.dataproc.driver.compute.tier 要在驱动程序上使用的计算层级。 优质计算层级提供更高的每核心性能,但费率更高。standard 标准、高级
spark.dataproc.driver.disk.size 分配给驱动程序的磁盘空间量,使用大小单位后缀(“k”“m”“g”或“t”)指定。不得小于 250GiB。 如果在驱动程序中选择了高级磁盘层级,则有效大小为 375g、750g、1500g、3000g、6000g 或 9000g。 每个核心 100GiB 1024g2t
spark.dataproc.driver.disk.tier 驱动程序上用于本地和 Shuffle 存储的磁盘层级。 高级磁盘层级可在 IOPS 和吞吐量方面提供更好的性能,但费率更高。如果在驱动程序上选择了高级磁盘层级,则还必须使用 spark.dataproc.driver.compute.tier=premium 选择高级计算层级,并且必须使用 spark.dataproc.executor.disk.size 指定磁盘空间量。

如果选择了优质磁盘层级,驱动程序会额外分配 50 GiB 的磁盘空间用于系统存储空间,用户应用无法使用这些磁盘空间。

standard 标准、高级
spark.executor.cores 要分配给每个 Spark 执行器的核心 (vCPU) 的数量。 有效值:4816 4
spark.executor.memory

要分配给每个 Spark 执行程序进程的内存量,以带有大小单位后缀(“m”“g”或“t”)的 JVM 内存字符串格式指定。

对于标准计算层级,每个执行器核心的总执行器内存(包括执行器内存开销)必须介于 1024m7424m 之间(对于优质计算层级,则为 24576m)。例如,如果 spark.executor.cores = 4,则 4096m <= spark.executor.memory + spark.executor.memoryOverhead <= 29696m

512m2g
spark.executor.memoryOverhead

要分配给 Spark 执行器进程的额外 JVM 内存量,以带有大小单位后缀(“m”“g”或“t”)的 JVM 内存字符串格式指定。

这是用于 JVM 开销、内部字符串和其他原生开销的非堆内存,包括 PySpark 执行器内存和在容器中运行的其他非执行器进程使用的内存。 运行执行器的容器的最大内存大小由 spark.executor.memoryOverheadspark.executor.memory 之和确定。

对于标准计算层级,每个执行器核心的总执行器内存(包括执行器内存开销)必须介于 1024m7424m 之间(对于优质计算层级,则为 24576m)。例如,如果 spark.executor.cores = 4,则 4096m <= spark.executor.memory + spark.executor.memoryOverhead <= 29696m

10% 的执行器内存,但 PySpark 批量工作负载除外,该工作负载默认为执行器内存的 40% 512m2g
spark.dataproc.executor.compute.tier 要在执行器上使用的计算层级。优质计算层级提供更高的每核心性能,但费率更高。standard 标准、高级
spark.dataproc.executor.disk.size 分配给每个执行器的磁盘空间量,使用大小单位后缀(“k”“m”“g”或“t”)指定。执行器磁盘空间可用于 shuffle 数据和暂存依赖项。不得小于 250GiB。 如果在执行器上选择了优质磁盘层级,则有效大小为 375g、750g、1500g、3000g、6000g 或 9000g。 每个核心 100GiB 1024g2t
spark.dataproc.executor.disk.tier 用于执行器上的本地和 Shuffle 存储的磁盘层级。高级磁盘层级可在 IOPS 和吞吐量方面提供更好的性能,但费率更高。如果在执行器上选择了高级磁盘层级,则还必须使用 spark.dataproc.executor.compute.tier=premium 选择高级计算层级,并且必须使用 spark.dataproc.executor.disk.size 指定磁盘空间量。

如果选择了高级磁盘层级,则每个执行程序都会额外分配 50 GiB 的磁盘空间用于系统存储空间,用户应用无法使用这些磁盘空间。

standard 标准、高级
spark.executor.instances 要分配的初始执行器数量。批量工作负载启动后,自动扩缩可能会更改活跃执行程序的数量。不得小于 2,最大值为 2000

自动扩缩属性

如需查看可用于配置 Dataproc Serverless 自动扩缩的 Spark 属性列表,请参阅 Spark 动态分配属性

其他属性

属性 说明
dataproc.diagnostics.enabled 启用此属性可针对批量工作负载失败或取消运行诊断。如果启用诊断功能,您的批量工作负载将在工作负载完成后继续使用 计算资源,直到诊断完成为止。 指向诊断 Tar 归档文件位置的 URI 列在 Batch.RuntimeInfo.diagnosticOutputUri API 字段中。
dataproc.gcsConnector.version 使用此属性可升级到与批量工作负载的运行时版本安装的版本不同的 Cloud Storage 连接器版本
dataproc.sparkBqConnector.version 使用此属性可升级到与批量工作负载的运行时版本安装的版本不同的 Spark BigQuery 连接器版本(请参阅将 BigQuery 连接器与 Dataproc Serverless for Spark 搭配使用)。