Dataproc Serverless 使用 Spark 属性 要分配给批量工作负载的计算、内存和磁盘资源。 这些属性设置可能会影响工作负载配额消耗和费用(请参阅 Dataproc 无服务器配额和 Dataproc 无服务器价格了解详情 信息)。
设置 Spark 批处理工作负载属性
您可以指定 Spark 属性 提交 Dataproc Serverless Spark 批量工作负载 使用 Google Cloud 控制台、gcloud CLI 或 Dataproc API。
控制台
在属性部分中,点击添加属性,然后输入
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=yarn
和 spark.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) 数。
有效值:4 、8 、16 。 |
4 |
|
spark.driver.memory |
要分配给 Spark 驱动程序进程的内存量。 使用大小单位后缀(“m”“g”)的 JVM 内存字符串格式指定 或“t”)。 每个驱动程序核心的驱动程序内存总量(包括驱动程序内存开销),
对于 |
512m ,2g |
|
spark.driver.memoryOverhead |
要分配给 Spark 驱动程序的额外 JVM 内存量 进程,以带有大小单位后缀的 JVM 内存字符串格式指定 (“m”、“g”或“t”)。 这是与 JVM 开销相关的非堆内存,
内部字符串和其他原生开销,并且包括
其他驱动程序进程(如 PySpark 驱动程序进程)使用的内存
以及容器中运行的其他非驱动程序进程使用的内存。
运行驱动程序的容器的最大内存大小为
等于 每个驱动程序核心的驱动程序内存总量(包括驱动程序内存开销),
必须介于 |
驱动程序内存的 10%(PySpark 批处理工作负载除外), 默认为驱动程序内存的 40% | 512m ,2g |
spark.dataproc.driver.compute.tier |
要在驱动程序上使用的计算层级。 高级计算层级提供更高的单核性能, 而是以较高的费率结算 | standard | 标准、优质 |
spark.dataproc.driver.disk.size |
分配给驱动程序的磁盘空间量;
使用尺寸单位后缀(“k”“m”“g”或“t”)指定。
必须至少为 250GiB 。
如果在驱动程序上选择了高级磁盘层级,则有效大小为
375g、750g、1500g、3000g、6000g 或 9000g。 |
每个核心 100GiB |
1024g ,2t |
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) 数。
有效值:4 、8 、16 。 |
4 |
|
spark.executor.memory |
要分配给每个 Spark 执行器进程的内存量, 以 JVM 内存字符串格式指定,并带有大小单位后缀(“m”、“g”或 “t”)。 每个执行器核心的执行器总内存,包括执行器内存
开销,必须介于 |
512m ,2g |
|
spark.executor.memoryOverhead |
要分配给 Spark 的额外 JVM 内存量 执行器进程,以具有大小单位的 JVM 内存字符串格式指定 后缀(“m”、“g”或“t”)。 这是非堆内存,用于 JVM 开销、内部字符串
和其他原生开销,并且包括 PySpark 执行器内存和
容器中运行的其他非执行程序进程使用的内存。
运行执行器的容器的最大内存大小为
等于 每个执行器核心的执行器总内存,包括执行器内存
开销,必须介于 |
执行器内存的 10%(PySpark 批处理工作负载除外), 默认为执行器内存的 40% | 512m ,2g |
spark.dataproc.executor.compute.tier |
要对执行器使用的计算层级。 高级计算层级提供更高的单核性能, 而是以较高的费率结算 | standard | 标准、优质 |
spark.dataproc.executor.disk.size |
分配给每个执行器的磁盘空间量,
使用尺寸单位后缀(“k”“m”“g”或“t”)指定。
执行器磁盘空间可能会用于 shuffle 数据和暂存
依赖项必须至少为 250GiB 。
如果在执行器上选择了高级磁盘层级,则有效大小为
375g、750g、1500g、3000g、6000g 或 9000g。 |
每个核心 100GiB |
1024g ,2t |
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() 的调用。有效
日志级别包括:ALL 、DEBUG 、ERROR 、
FATAL 、INFO 、OFF 、TRACE 、
和 WARN 。 |
INFO ,DEBUG |
|
spark.executor.syncLogLevel.enabled |
设置为 true 时,系统会通过
SparkContext.setLogLevel() 方法是
传播到所有执行器。 |
false |
true ,false |
spark.log.level.PackageName |
设置后,会覆盖任何用户定义的日志设置
通过调用 SparkContext.setLogLevel(PackageName, level) 实现的效果
有效日志级别包括:ALL 、DEBUG 、
ERROR 、FATAL 、INFO 、OFF 、
TRACE 和 WARN 。 |
spark.log.level.org.apache.spark=error |
时间安排属性
属性 | 说明 | 默认 | 示例 |
---|---|---|---|
spark.scheduler.excludeShuffleSkewExecutors |
在调度时排除 shuffle 映射倾斜的执行器,这可以减少 由 shuffle 写入偏差导致的 shuffle 提取等待时间较长。 | false |
true |
spark.scheduler.shuffleSkew.minFinishedTasks |
执行器上已完成的 Shuffle 映射任务的最小数量 视为偏差。 | 10 |
100 |
spark.scheduler.shuffleSkew.maxExecutorsNumber |
被视为偏差的执行器数量上限。偏差执行器 不会纳入当前时间安排。 | 5 | 10 |
spark.scheduler.shuffleSkew.maxExecutorsRatio |
被视为偏差的总执行程序的最大比率。偏差执行器 不会安排定期生成报表 | 0.05 | 0.1 |
spark.scheduler.shuffleSkew.ratio |
某个设备上有多个平均已完成的 Shuffle 映射任务 执行器视为偏差。 | 1.5 | 2.0 |
其他属性
属性 | 说明 |
---|---|
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 服务。 |