Managed Service for Apache Spark 執行階段 4.0

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

注意:

  • 4.0 執行階段預設使用 UTF-8 做為字元編碼。

  • 4.0 執行階段使用 Pixi (而非 Conda) 管理 Python 環境。如要瞭解環境包含的套件,請參閱「Python 程式庫」。

Runtime 4.0 功能和改善項目

與 3.0 執行階段相比,4.0 執行階段對預設值和功能進行了下列變更:

  • 預設為進階級:除非您將 dataproc.tier 屬性設為 standard,否則 Batch 工作負載會在進階級中執行。互動式工作階段一律會以進階級執行。進階級工作負載則按進階資料運算單元 (DCU) 費率計費。

    4.0 執行階段也讓工作負載更容易設定:

    • 更優異的預設設定:在進階級中,驅動程式和執行程式預設會使用進階運算和磁碟資源,因此您不必設定屬性即可使用。如需預設磁碟大小,請參閱「預設磁碟大小」一節。在進階級中,磁碟大小不一定要是 375 GiB 的倍數。
    • 屬性較少: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.75 GiB 的記憶體,比 3.0 執行階段的預設記憶體設定提供更多記憶體。記憶體形狀也讓記憶體更容易設定:

    • 新記憶體形狀屬性:如要選取驅動程式或執行器的記憶體形狀,請將 spark.dataproc.driver.memory.shape 或 spark.dataproc.executor.memory.shape 屬性設為 highmem 或 standard。standard 記憶體配置為每個 vCPU 提供 3.75 GiB 的記憶體。
    • 自動調整記憶體大小:Managed Service for Apache Spark 會根據驅動程式和執行器的記憶體配置,調整 Spark 記憶體和記憶體負擔的大小,因此您不需要設定 spark.driver.memory、spark.executor.memory、spark.driver.memoryOverhead 或 spark.executor.memoryOverhead。
  • 啟動速度更快:在進階級中,使用預設驅動程式設定的工作負載,可在快速啟動 VM 上執行驅動程式,縮短工作負載啟動時間。

  • Lakehouse 執行階段目錄做為預設目錄:批次工作負載和互動式工作階段會使用 Lakehouse 執行階段目錄做為預設 Spark 目錄,因此您不必設定目錄,就能建立及查詢 Apache Iceberg 資料表。預先設定的 bigquery Spark 目錄仍可使用。如要使用其他目錄,請參閱「停用新手目錄」。

  • 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 記憶體設定,這是 spark.driver.cores 和 spark.executor.cores 的預設值:

記憶體形狀 每個 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 可以在快速啟動的 VM 上執行驅動程式,縮短工作負載啟動時間。如果符合下列所有條件,驅動程式就可在快速啟動 VM 上執行:

  • 工作負載會在進階級執行,這是 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 加速器。

在快速啟動 VM 上執行的驅動程式,會與使用相同記憶體配置的其他驅動程式取得相同的記憶體。

預設磁碟大小

在 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 屬性,移除預先安裝的連接器。否則批次工作負載會失敗。

  • 暫存 bucket:4.0 執行階段不會使用 Cloud Storage 暫存 bucket。

  • 永久記錄伺服器 (PHS):不支援 PHS。請改用 Spark UI。

  • SparkR:不支援 SparkR 批次。請改用 sparklyr。

  • Jupyter 工作階段:不支援 Jupyter 工作階段。請改用 Spark Connect 工作階段,這是互動式 Spark 開發的業界標準。

Python 程式庫

下表列出 4.0 執行階段包含的 Python 套件。如果表格未列出套件版本,執行階段會包含與其他套件相容的最新版本套件。這些版本可能會在子次要執行階段版本中變更。

serverless-spark-4.0-debian-13 python 程式庫
套件名稱 版本
accelerate
bigframes
ca-certificates
certifi
cookiecutter
cuda 12.9
cudnn
cython
dask
datasets
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
polars
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