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.0utiliseUTF-8comme encodage de caractères par défaut.L'environnement d'exécution
4.0utilise 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.tiersurstandard. 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.0facilite é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
375Gio. - Moins de propriétés : la propriété
dataproc.tierdé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ésspark.dataproc.driver.compute.tier,spark.dataproc.executor.compute.tier,spark.dataproc.driver.disk.tieretspark.dataproc.executor.disk.tiersont supprimées.
- 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
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éfinissezspark.dataproc.engine=lightningEngine. Pour utiliser également l'exécution native des requêtes, définissezspark.dataproc.lightningEngine.runtime=native.Forme de mémoire
highmempar défaut : l'environnement d'exécution4.0introduit 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émoirehighmem, qui fournit7.75Gio 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écution3.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.shapeouspark.dataproc.executor.memory.shapesurhighmemoustandard. La forme de mémoirestandardfournit3.75Gio 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.memoryOverheadouspark.executor.memoryOverhead.
- 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é
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
bigquerypré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
highmemdoté 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 de0.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éfinissezspark.driver.memoryOverheadFactorouspark.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.shapeouspark.dataproc.executor.memory.shape. - Mémoire :
spark.driver.memoryouspark.executor.memory. - Surcharge de mémoire :
spark.driver.memoryOverheadouspark.executor.memoryOverhead. - Un accélérateur GPU. Les pilotes et les exécuteurs qui utilisent des GPU obtiennent une quantité fixe de mémoire.
- Une forme 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
highmemoustandard.
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 est400g. - La charge de travail ne définit pas
spark.driver.memory,spark.driver.memoryOverhead,spark.driver.memoryOverheadFactorni 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.tieretspark.dataproc.executor.disk.tierne 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.enabledetspark.memory.offHeap.sizene 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-connectorpour supprimer le connecteur préinstallé. Sinon, la charge de travail par lot échoue.Buckets de préproduction : l'environnement d'exécution
4.0n'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.
| 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 |