Environnement d'exécution Managed Service pour Apache Spark 4.0

Composants de la version 4.0 de l'environnement d'exécution Spark

Composant 4.0.0
Apache Spark 4.2.0
Connecteur Cloud Storage 4.0.7
Connecteur BigQuery 0.46.0
Java 25
Python 3.13
Scala 2.13.17

Remarques :

  • L'environnement d'exécution 4.0 utilise UTF-8 comme encodage de caractères par défaut.

  • L'environnement d'exécution 4.0 utilise Pixi au lieu de Conda pour gérer son environnement Python. Pour connaître les packages inclus dans l'environnement, consultez Bibliothèques Python.

Fonctionnalités et améliorations de l'environnement d'exécution 4.0

Par rapport à l'environnement d'exécution 3.0, l'environnement d'exécution 4.0 inclut les modifications suivantes apportées aux valeurs par défaut et aux fonctionnalités :

  • Niveau Premium par défaut : les charges de travail par lot s'exécutent au niveau Premium, sauf si vous définissez la propriété dataproc.tier sur standard. Les sessions interactives s'exécutent toujours au niveau Premium. Les charges de travail de niveau Premium sont facturées au tarif de l'unité de calcul de données (DCU) Premium.

    L'environnement d'exécution 4.0 facilite également la configuration des charges de travail :

    • Meilleures valeurs par défaut : au niveau Premium, le pilote et les exécuteurs utilisent par défaut des ressources de calcul et de disque Premium. Vous n'avez donc pas besoin de définir des propriétés pour les utiliser. Pour connaître les tailles de disque par défaut, consultez Taille de disque par défaut. Dans le niveau Premium, les tailles de disque n'ont pas besoin d'être des multiples de 375 Gio.
    • Moins de propriétés : la propriété dataproc.tier détermine les ressources de calcul et de disque du pilote et des exécuteurs. Vous n'avez donc pas besoin de les configurer séparément. Les propriétés spark.dataproc.driver.compute.tier, spark.dataproc.executor.compute.tier, spark.dataproc.driver.disk.tier et spark.dataproc.executor.disk.tier sont supprimées.
  • Lightning Engine par défaut : les charges de travail par lot du niveau Premium utilisent Lightning Engine par défaut. Pour désactiver cette option, définissez spark.dataproc.engine=default. Les sessions interactives n'utilisent pas Lightning Engine par défaut. Pour l'activer pour une session interactive, définissez spark.dataproc.engine=lightningEngine. Pour utiliser également l'exécution native des requêtes, définissez spark.dataproc.lightningEngine.runtime=native.

  • Forme de mémoire highmem par défaut : l'environnement d'exécution 4.0 introduit des formes de mémoire, qui déterminent la quantité de mémoire dont disposent le pilote et les exécuteurs. Les pilotes et les exécuteurs utilisent par défaut la forme de mémoire highmem, qui fournit 7.75 Gio de mémoire par processeur virtuel et leur donne plus de mémoire que les paramètres de mémoire par défaut de l'environnement d'exécution 3.0. Les formes de mémoire facilitent également la configuration de la mémoire :

    • Nouvelles propriétés de forme de mémoire : pour sélectionner la forme de mémoire du pilote ou des exécuteurs, définissez la propriété spark.dataproc.driver.memory.shape ou spark.dataproc.executor.memory.shape sur highmem ou standard. La forme de mémoire standard fournit 3.75 Gio de mémoire par processeur virtuel.
    • Dimensionnement automatique de la mémoire : Managed Service pour Apache Spark dimensionne la mémoire Spark et la surcharge de mémoire du pilote et des exécuteurs en fonction de leur forme de mémoire. Vous n'avez donc pas besoin de définir spark.driver.memory, spark.executor.memory, spark.driver.memoryOverhead ou spark.executor.memoryOverhead.
  • Démarrage plus rapide : au niveau Premium, les charges de travail qui utilisent la configuration de pilote par défaut peuvent exécuter le pilote sur une VM à démarrage rapide, ce qui réduit le temps de démarrage de la charge de travail.

  • Catalogue d'environnements d'exécution Lakehouse comme catalogue par défaut : les charges de travail par lot et les sessions interactives utilisent le catalogue d'environnements d'exécution Lakehouse comme catalogue Spark par défaut. Vous pouvez ainsi créer et interroger des tables Apache Iceberg sans configurer de catalogue. Le catalogue Spark bigquery préconfiguré est toujours disponible. Pour utiliser un autre catalogue, consultez Désactiver le catalogue de démarrage.

  • Quota de DCU : les charges de travail consomment le quota d'unités de calcul de données (DataComputeUnitsPerProjectPerRegion) de Managed Service pour Apache Spark au lieu des quotas de processeur et de disque Compute Engine de votre projet. Les charges de travail qui utilisent des GPU continuent de consommer des quotas Compute Engine. Pour en savoir plus, consultez Quotas sans serveur de Managed Service pour Apache Spark.

L'environnement d'exécution 4.0 inclut également les fonctionnalités de l'environnement d'exécution 3.0, telles que les charges de travail régionales et multizones, les identifiants de l'utilisateur final par défaut et le nettoyage rapide des ressources.

Configurations de mémoire

Dans l'environnement d'exécution 4.0, la forme de la mémoire du pilote et des exécuteurs détermine la quantité de mémoire qui leur a été allouée. Une forme de mémoire fournit une quantité fixe de mémoire pour chaque vCPU. Managed Service pour Apache Spark répartit cette mémoire entre le tas de mémoire Spark (spark.driver.memory ou spark.executor.memory) et la surcharge de mémoire (spark.driver.memoryOverhead ou spark.executor.memoryOverhead).

L'environnement d'exécution 4.0 introduit les propriétés suivantes pour sélectionner la forme de mémoire du pilote et des exécuteurs :

Propriété Description Par défaut
spark.dataproc.driver.memory.shape Forme de mémoire du pilote, highmem ou standard. highmem
spark.dataproc.executor.memory.shape Forme de mémoire des exécuteurs, highmem ou standard. highmem

Le tableau suivant liste la mémoire fournie par chaque forme de mémoire, ainsi que les paramètres de mémoire Spark par défaut d'un pilote ou d'un exécuteur disposant de quatre processeurs virtuels, ce qui correspond à la valeur par défaut de spark.driver.cores et spark.executor.cores :

Forme de la mémoire Mémoire par vCPU Charges de travail par lot PySpark : mémoire et surcharge de mémoire Autres charges de travail par lot et sessions interactives : mémoire et surcharge de mémoire
highmem 7,75 Gio 21154m et 8462m 26924m et 2692m
standard 3.75 GiB 9681m et 3872m 12321m et 1232m

Remarques :

  • La mémoire d'une forme de mémoire évolue en fonction du nombre de vCPU. Par exemple, un exécuteur highmem doté de 8 vCPU obtient 62 Gio de mémoire.

  • Une partie de la mémoire d'une forme de mémoire est réservée au système et n'est pas disponible pour Spark. Les charges de travail qui utilisent des images de conteneurs personnalisées réservent de la mémoire supplémentaire. Leurs paramètres de mémoire Spark par défaut sont donc légèrement inférieurs.

  • Les charges de travail par lot PySpark utilisent un facteur de surcharge de mémoire de 0.4. Les autres charges de travail par lot et sessions interactives utilisent un facteur de surcharge de mémoire de 0.1. Pour modifier la répartition de la mémoire d'une forme de mémoire entre le tas de mémoire et la surcharge de mémoire, définissez spark.driver.memoryOverheadFactor ou spark.executor.memoryOverheadFactor.

  • La forme de mémoire détermine la mémoire provisionnée pour le pilote et les exécuteurs, ce qui affecte l'utilisation des DCU. Pour en savoir plus, consultez la page Tarifs de Managed Service pour Apache Spark.

Application des formes de mémoire

Managed Service pour Apache Spark applique des formes de mémoire au pilote et aux exécuteurs comme suit :

  • Un pilote ou un exécuteur utilise la forme de mémoire highmem, sauf si vous définissez l'un des éléments suivants :

    • Une forme de mémoire : spark.dataproc.driver.memory.shape ou spark.dataproc.executor.memory.shape.
    • Mémoire : spark.driver.memory ou spark.executor.memory.
    • Surcharge de mémoire : spark.driver.memoryOverhead ou spark.executor.memoryOverhead.
    • Un accélérateur GPU. Les pilotes et les exécuteurs qui utilisent des GPU obtiennent une quantité fixe de mémoire.
  • Si vous définissez la mémoire ou la surcharge de mémoire d'un pilote ou d'un exécuteur, mais que vous ne définissez pas sa forme de mémoire, le pilote ou l'exécuteur n'utilise pas de forme de mémoire. Au lieu de cela, Managed Service pour Apache Spark dimensionne le pilote ou l'exécuteur à partir de la mémoire que vous spécifiez, comme dans les environnements d'exécution précédents.

  • La définition du facteur de surcharge de mémoire d'un pilote ou d'un exécuteur ne modifie pas sa forme de mémoire.

  • Managed Service pour Apache Spark rejette une charge de travail par lot ou une session interactive dans les cas suivants :

    • Il définit la forme de mémoire d'un pilote ou d'un exécuteur, ainsi que la mémoire ou la surcharge de mémoire du même pilote ou exécuteur. Pour modifier la répartition de la mémoire d'une forme de mémoire, définissez plutôt le facteur de surcharge de mémoire.
    • Elle définit une forme de mémoire sur une valeur autre que highmem ou standard.

Pilote de démarrage rapide

Au niveau Premium, Managed Service pour Apache Spark peut exécuter le pilote sur une VM à démarrage rapide afin de réduire le temps de démarrage de la charge de travail. Le pilote peut s'exécuter sur une VM à démarrage rapide si toutes les conditions suivantes sont remplies :

  • La charge de travail s'exécute au niveau Premium, qui est le niveau par défaut dans l'environnement d'exécution 4.0.
  • Le conducteur utilise une forme de mémoire.
  • Le pilote dispose de quatre vCPU (spark.driver.cores=4), ce qui correspond à la valeur par défaut.
  • La taille du disque du pilote (spark.dataproc.driver.disk.size) est inférieure ou égale à 450g. La valeur par défaut est 400g.
  • La charge de travail ne définit pas spark.driver.memory, spark.driver.memoryOverhead, spark.driver.memoryOverheadFactor ni un accélérateur GPU pour le pilote.

Un pilote qui s'exécute sur une VM à démarrage rapide obtient la même mémoire que les autres pilotes qui utilisent la même forme de mémoire.

Taille de disque par défaut

Dans l'environnement d'exécution 4.0, le niveau d'une charge de travail détermine la taille de disque par défaut de son pilote et de ses exécuteurs :

Niveau Taille de disque par défaut de chaque pilote et exécuteur
Premium (par défaut) 100 Gio par vCPU et au moins 375 Gio. Par exemple, 400 Gio pour 4 vCPU.
Standard `75` Gio par vCPU, et jusqu'à 1 000 Gio. Par exemple, "300" Gio pour quatre processeurs virtuels.

Pour modifier la taille du disque, définissez la propriété d'allocation des ressources spark.dataproc.driver.disk.size ou spark.dataproc.executor.disk.size. Dans le niveau Premium, les tailles de disque n'ont pas besoin d'être des multiples de 375 Gio.

Fonctionnalités non compatibles et changements de comportement

Les fonctionnalités suivantes ne sont pas compatibles ou se comportent différemment dans l'environnement d'exécution 4.0 :

  • Propriétés de niveau de calcul et de disque : les propriétés spark.dataproc.driver.compute.tier, spark.dataproc.executor.compute.tier, spark.dataproc.driver.disk.tier et spark.dataproc.executor.disk.tier ne sont pas acceptées. Utilisez plutôt la propriété dataproc.tier.

  • Propriétés de mémoire hors tas : les propriétés spark.memory.offHeap.enabled et spark.memory.offHeap.size ne sont pas acceptées.

  • Sous-réseaux : vous devez spécifier un sous-réseau lorsque vous envoyez une charge de travail par lot ou créez une session interactive. Les sous-réseaux à double pile (IPv4 et IPv6) et IPv6 uniquement ne sont pas compatibles. Pour en savoir plus, consultez la section Configuration du réseau.

  • Connecteur Spark BigQuery personnalisé : si vous ajoutez un fichier JAR de connecteur Spark BigQuery à une charge de travail par lot, définissez également la propriété dataproc.artifacts.remove=spark-bigquery-connector pour supprimer le connecteur préinstallé. Sinon, la charge de travail par lot échoue.

  • Buckets de préproduction : l'environnement d'exécution 4.0 n'utilise pas les buckets de préproduction Cloud Storage.

  • Serveur d'historique persistant (PHS) : le PHS n'est pas compatible. Utilisez plutôt l'interface utilisateur Spark.

  • SparkR : les lots SparkR ne sont pas acceptés. Utilisez plutôt sparklyr.

  • Sessions Jupyter : les sessions Jupyter ne sont pas acceptées. Utilisez plutôt les sessions Spark Connect, la norme du secteur pour le développement Spark interactif.

Bibliothèques Python

Le tableau suivant liste les packages Python inclus dans l'environnement d'exécution 4.0. Si la table ne liste pas de version pour un package, l'environnement d'exécution inclut la dernière version du package compatible avec les autres packages lors de la compilation de l'environnement d'exécution. Ces versions peuvent changer dans les versions d'exécution mineures.

Bibliothèques Python serverless-spark-4.0-debian-13
Nom du package Version
accélérer
bigframes
ca-certificates
certifi
cookiecutter
cuda 12.9
cudnn
cython
dask
ensembles de données
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
papeterie
polars
psycopg2-binary
pyarrow
pydot
pyiceberg
pymongo
pynvml
python 3.13
python-dateutil
pytorch-gpu
requêtes
rtree
scikit-image
scikit-learn
scipy
seaborn
sentence-transformers
sentencepiece
shap
spacy
sqlalchemy
statsforecast
sympy
tables
torcheval
torchvision
transformers
virtualenv
wordcloud
xgboost 3.4