Spark 属性

Dataproc Serverless 使用 Spark 属性 要分配给批量工作负载的计算、内存和磁盘资源。 这些属性设置可能会影响工作负载配额消耗和费用(请参阅 Dataproc 无服务器配额Dataproc 无服务器价格了解详情 信息)。

设置 Spark 批处理工作负载属性

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

控制台

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

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

gcloud

gcloud CLI 批量提交示例:

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

API

设置 RuntimeConfig.properties 包含受支持的 Spark 属性 batches.create 请求。

支持的 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”)的 JVM 内存字符串格式指定 或“t”)。

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

512m2g
spark.driver.memoryOverhead

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

这是与 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.

如果选择了高级磁盘层级,则驱动程序会分配 为系统存储额外提供了 50GiB 的磁盘空间 可供用户应用使用

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

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

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

512m2g
spark.executor.memoryOverhead

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

这是非堆内存,用于 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.

如果选择了优质磁盘层级,则会为每个执行器分配 为系统存储额外提供了 50GiB 的磁盘空间 可供用户应用使用

standard 标准、优质
spark.executor.instances 要分配的初始执行器数量。批量工作负载之后 自动扩缩可能会更改活跃执行器的数量。必须为 最小值为 2,最大值为 2000

自动扩缩属性

请参阅 Spark 动态分配属性 ,了解可用于配置集群内的 Spark 属性列表 Dataproc 无服务器自动扩缩。

日志记录属性

属性 说明 默认 示例
spark.log.level 设置后,系统会使用如下效果覆盖所有用户定义的日志设置: 在 Spark 启动时对 SparkContext.setLogLevel() 的调用。有效 日志级别包括:ALLDEBUGERRORFATALINFOOFFTRACE、 和 WARN INFODEBUG
spark.executor.syncLogLevel.enabled 设置为 true 时,系统会通过 SparkContext.setLogLevel() 方法是 传播到所有执行器。 false truefalse
spark.log.level.PackageName 设置后,会覆盖任何用户定义的日志设置 通过调用 SparkContext.setLogLevel(PackageName, level) 实现的效果 有效日志级别包括:ALLDEBUGERRORFATALINFOOFFTRACEWARN spark.log.level.org.apache.spark=error

其他属性

属性 说明
dataproc.diagnostics.enabled 启用此属性,以在批量工作负载失败时运行诊断;或者 取消。如果启用了诊断功能,批量工作负载将继续使用 计算资源 在工作负载完成之后,直至诊断完成。 指向诊断 tar 压缩文件位置的 URI 列在 Batch.RuntimeInfo.diagnosticOutputUri API 字段中。
dataproc.gcsConnector.version 使用此属性可升级到 Cloud Storage 连接器版本 与批量工作负载中安装的版本不同 运行时版本
dataproc.sparkBqConnector.version 使用此属性可升级到 Spark BigQuery 连接器版本 与批量工作负载中安装的版本不同 运行时版本(请参阅 将 BigQuery 连接器与 Dataproc Serverless for Spark 搭配使用
dataproc.profiling.enabled 将此属性设置为 true,即可为 Dataproc 无服务器工作负载。
dataproc.profiling.name 使用此属性可设置用于在 Profiler 服务。