Spark 运行时 4.0 版组件
| 组件 | 4.0.0 |
|---|---|
| Apache Spark | 4.2.0 |
| Cloud Storage 连接器 | 4.0.7 |
| BigQuery 连接器 | 0.46.0 |
| Java | 25 |
| Python | 3.13 |
| Scala | 2.13.17 |
注意:
Runtime 4.0 的功能和改进
与 3.0 运行时相比,4.0 运行时对默认值和功能进行了以下更改:
默认使用高级层级:除非您将
dataproc.tier属性设置为standard,否则批处理工作负载会在高级层级中运行。交互式会话始终在高级层级中运行。 高级层级工作负载按高级数据计算单元 (DCU) 费率收费。4.0运行时还使工作负载更易于配置:- 更优的默认设置:在高级层级中,驱动程序和执行程序默认使用高级计算和磁盘资源,因此您无需设置属性即可使用它们。如需了解默认磁盘大小,请参阅默认磁盘大小。在高级层级中,磁盘大小无需是
375GiB 的倍数。 - 属性更少:
dataproc.tier属性决定了驱动程序和执行器的计算和磁盘资源,因此您无需单独配置它们。spark.dataproc.driver.compute.tier、spark.dataproc.executor.compute.tier、spark.dataproc.driver.disk.tier和spark.dataproc.executor.disk.tier属性已被移除。
- 更优的默认设置:在高级层级中,驱动程序和执行程序默认使用高级计算和磁盘资源,因此您无需设置属性即可使用它们。如需了解默认磁盘大小,请参阅默认磁盘大小。在高级层级中,磁盘大小无需是
默认使用 Lightning Engine:高级层级批处理工作负载默认使用 Lightning Engine。如需停用,请设置
spark.dataproc.engine=default。默认情况下,交互式会话不使用 Lightning Engine。如需为交互式会话启用该功能,请设置spark.dataproc.engine=lightningEngine。如需同时使用原生查询执行,请设置spark.dataproc.lightningEngine.runtime=native。默认
highmem内存形状:4.0运行时引入了内存形状,用于确定驱动程序和执行程序获得的内存量。驱动程序和执行程序默认使用highmem内存形状,该形状为每个 vCPU 提供7.75GiB 的内存,并且比3.0运行时的默认内存设置提供更多内存。内存形状还使内存更易于配置:- 新的内存形状属性:如需选择驱动程序或执行程序的内存形状,请将
spark.dataproc.driver.memory.shape或spark.dataproc.executor.memory.shape属性设置为highmem或standard。standard内存形状为每个 vCPU 提供3.75GiB 内存。 - 自动调整内存大小:Managed Service for Apache Spark 会根据驱动程序和执行程序的内存形状来调整其 Spark 内存和内存开销,因此您无需设置
spark.driver.memory、spark.executor.memory、spark.driver.memoryOverhead或spark.executor.memoryOverhead。
- 新的内存形状属性:如需选择驱动程序或执行程序的内存形状,请将
启动速度更快:在高级层级中,使用默认驱动程序配置的工作负载可以在快速启动虚拟机上运行驱动程序,从而缩短工作负载启动时间。
Lakehouse 运行时目录作为默认目录:批处理工作负载和交互式会话使用 Lakehouse 运行时目录作为默认 Spark 目录,因此您无需配置目录即可创建和查询 Apache Iceberg 表。预配置的
bigquerySpark 目录仍然可用。如需使用其他目录,请参阅停用入门目录。DCU 配额:工作负载会消耗 Managed Service for Apache Spark 数据计算单元配额 (
DataComputeUnitsPerProjectPerRegion),而不是项目的 Compute Engine CPU 和磁盘配额。使用 GPU 的工作负载会继续消耗 Compute Engine 配额。如需了解详情,请参阅 Managed Service for Apache Spark 无服务器配额。
4.0 运行时还包含 3.0 运行时的功能,例如区域级和多可用区工作负载、默认最终用户凭证以及快速资源清理。
内存配置
在 4.0 运行时中,驱动程序和执行程序的内存形状决定了它们分配到的内存量。内存形状为每个 vCPU 提供固定数量的内存。Managed Service for Apache Spark 会在 Spark 堆(spark.driver.memory 或 spark.executor.memory)和内存开销(spark.driver.memoryOverhead 或 spark.executor.memoryOverhead)之间分配该内存。
4.0 运行时引入了以下属性,用于选择驱动程序和执行程序的内存形状:
| 属性 | 说明 | 默认 |
|---|---|---|
spark.dataproc.driver.memory.shape |
驱动程序的内存形状,highmem 或 standard。 |
highmem |
spark.dataproc.executor.memory.shape |
执行器的内存形状,highmem 或 standard。 |
highmem |
下表列出了每种内存配置提供的内存,以及具有 4 个 vCPU(spark.driver.cores 和 spark.executor.cores 的默认值)的驱动程序或执行程序的默认 Spark 内存设置:
| 记忆形状 | 每个 vCPU 的内存 | PySpark 批处理工作负载:内存和内存开销 | 其他批处理工作负载和交互式会话:内存和内存开销 |
|---|---|---|---|
highmem |
7.75 GiB | 21154m和8462m之间 |
26924m和2692m之间 |
standard |
3.75 GiB | 9681m和3872m之间 |
12321m和1232m之间 |
注意:
内存形状的内存会随 vCPU 数量而扩缩。例如,具有 8 个 vCPU 的
highmem执行器会获得 62 GiB 内存。内存形状的部分内存预留给系统,Spark 无法使用。使用自定义容器映像的工作负载会预留额外的内存,因此其默认 Spark 内存设置略低。
PySpark 批处理工作负载使用的内存开销系数为
0.4。其他批处理工作负载和交互式会话使用的内存开销系数为0.1。如需更改内存形状的内存在堆和内存开销之间的分配方式,请设置spark.driver.memoryOverheadFactor或spark.executor.memoryOverheadFactor。内存形状决定了为驱动程序和执行程序预配的内存,这会影响 DCU 使用情况。如需了解详情,请参阅 Managed Service for Apache Spark 价格。
如何应用内存形状
Managed Service for Apache Spark 会将内存形状应用于驱动程序和执行程序,如下所示:
除非您为驱动程序或执行程序设置以下项之一,否则它会使用
highmem内存形状:- 内存形状:
spark.dataproc.driver.memory.shape或spark.dataproc.executor.memory.shape。 - 内存:
spark.driver.memory或spark.executor.memory。 - 内存开销:
spark.driver.memoryOverhead或spark.executor.memoryOverhead。 - GPU 加速器。使用 GPU 的驱动程序和执行程序会获得固定数量的内存。
- 内存形状:
如果您设置了驱动程序或执行程序的内存或内存开销,但未设置其内存形状,则驱动程序或执行程序不会使用内存形状。而是由 Managed Service for Apache Spark 根据您指定的内存来调整驱动程序或执行程序的大小,就像在早期运行时中一样。
设置驱动程序或执行程序的内存开销系数不会更改其内存形状。
在以下情况下,Managed Service for Apache Spark 会拒绝批量工作负载或交互式会话:
- 它会设置驱动程序或执行程序的内存形状,还会设置同一驱动程序或执行程序的内存或内存开销。如需更改内存形状的内存拆分方式,请改为设置内存开销系数。
- 它会将内存形状设置为
highmem和standard以外的值。
快速启动驱动程序
在高级层级中,Managed Service for Apache Spark 可以在快速启动虚拟机上运行驱动程序,以缩短工作负载启动时间。如果满足以下所有条件,则驱动程序可以在快速启动虚拟机上运行:
- 工作负载在高级层级中运行,这是
4.0运行时中的默认层级。 - 驱动程序使用内存形状。
- 驱动程序有 4 个 vCPU (
spark.driver.cores=4),这是默认值。 - 驱动程序磁盘大小 (
spark.dataproc.driver.disk.size) 为450g或更小。 默认值为400g。 - 工作负载未为驱动程序设置
spark.driver.memory、spark.driver.memoryOverhead、spark.driver.memoryOverheadFactor或 GPU 加速器。
在快速启动虚拟机上运行的驱动程序与使用相同内存配置的其他驱动程序获得相同的内存。
默认磁盘大小
在 4.0 运行时中,工作负载的层级决定了其驱动程序和执行器的默认磁盘大小:
| 层级 | 每个驱动程序和执行器的默认磁盘大小 |
|---|---|
| Premium(默认) | 每个 vCPU 100 GiB,且至少为 375 GiB。例如,4 个 vCPU 对应 400 GiB。 |
| 标准 | 每个 vCPU 75 GiB,最多 1,000 GiB。例如,4 个 vCPU 对应 `300` GiB。 |
如需更改磁盘大小,请设置 spark.dataproc.driver.disk.size 或 spark.dataproc.executor.disk.size 资源分配属性。在高级层级中,磁盘大小无需是 375 GiB 的倍数。
不支持的功能和行为变更
以下功能在 4.0 运行时中不受支持或行为不同:
计算和磁盘层级属性:不支持
spark.dataproc.driver.compute.tier、spark.dataproc.executor.compute.tier、spark.dataproc.driver.disk.tier和spark.dataproc.executor.disk.tier属性。请改用dataproc.tier属性。堆外内存属性:不支持
spark.memory.offHeap.enabled和spark.memory.offHeap.size属性。子网:提交批量工作负载或创建交互式会话时,您必须指定子网。不支持双栈(IPv4 和 IPv6)和仅限 IPv6 的子网。如需了解详情,请参阅网络配置。
自定义 Spark BigQuery 连接器:如果您将 Spark BigQuery 连接器 JAR 文件添加到批处理工作负载,请同时设置
dataproc.artifacts.remove=spark-bigquery-connector属性以移除预安装的连接器。否则,批量工作负载会失败。暂存存储桶:
4.0运行时不使用 Cloud Storage 暂存存储桶。Persistent History Server (PHS):不支持 PHS。请改用 Spark 界面。
SparkR:不支持 SparkR 批处理。而应使用
sparklyr。Jupyter 会话:不支持 Jupyter 会话。请改用 Spark Connect 会话,这是交互式 Spark 开发的业界标准。
Python 库
下表列出了 4.0 运行时包含的 Python 软件包。如果表中未列出软件包的版本,则运行时会包含在构建运行时时与其他软件包兼容的最新版本。这些版本可能会在子次要运行时版本中发生变化。
| 软件包名称 | 版本 |
|---|---|
| accelerate | |
| bigframes | |
| ca-certificates | |
| certifi | |
| cookiecutter | |
| cuda | 12.9 |
| cudnn | |
| cython | |
| dask | |
| 数据集 | |
| db-dtypes | |
| deepspeed | |
| delta-spark | 4.4.0 |
| evaluate | |
| fastavro | |
| fastparquet | |
| gcsfs | |
| google-auth-oauthlib | |
| google-cloud-aiplatform | |
| google-cloud-alloydb-connector[pg8000] | |
| google-cloud-bigquery | |
| google-cloud-bigtable | |
| google-cloud-container | |
| google-cloud-datacatalog | |
| google-cloud-dataproc | |
| google-cloud-datastore | |
| google-cloud-dlp | |
| google-cloud-language | |
| google-cloud-logging | |
| google-cloud-monitoring | |
| google-cloud-pubsub | |
| google-cloud-redis | |
| google-cloud-secret-manager | |
| google-cloud-spanner | |
| google-cloud-spark-connect[interactive] | |
| google-cloud-speech | |
| google-cloud-storage | |
| google-cloud-storage-control | |
| google-cloud-texttospeech | |
| google-cloud-translate | |
| google-cloud-vision | |
| holoviews | |
| ipyparallel | |
| keyrings.google-artifactregistry-auth | |
| langchain | |
| lightgbm | |
| mkl | |
| mlflow | |
| nccl | |
| nltk | |
| numba | |
| numba-cuda | |
| numpy | |
| onnx | |
| opencv-python | |
| optuna | |
| pandas | |
| papermill | |
| 极地 | |
| psycopg2-binary | |
| pyarrow | |
| pydot | |
| pyiceberg | |
| pymongo | |
| pynvml | |
| Python | 3.13 |
| python-dateutil | |
| pytorch-gpu | |
| 请求 | |
| rtree | |
| scikit-image | |
| scikit-learn | |
| scipy | |
| seaborn | |
| sentence-transformers | |
| sentencepiece | |
| shap | |
| spacy | |
| sqlalchemy | |
| statsforecast | |
| sympy | |
| 表格 | |
| torcheval | |
| torchvision | |
| transformers | |
| virtualenv | |
| wordcloud | |
| xgboost | 3.4 |