Ce document décrit les propriétés Spark et comment les définir. Serverless pour Apache Spark utilise les propriétés Spark pour déterminer les ressources de calcul, de mémoire et de disque à allouer à votre charge de travail par lot. Ces paramètres de propriété peuvent affecter la consommation de quotas et le coût de la charge de travail. Pour en savoir plus, consultez Quotas Serverless pour Apache Spark et Tarifs Serverless pour Apache Spark.
Définir les propriétés de la charge de travail par lot Spark
Vous pouvez spécifier des propriétés Spark lorsque vous envoyez une charge de travail par lot Spark Serverless pour Apache Spark à l'aide de la Google Cloud console, de gcloud CLI ou de l'API Dataproc.
Console
Dans la Google Cloud console, accédez à la page Dataproc create batch (Créer un lot Dataproc).
Dans la section Properties (Propriétés), cliquez sur Add Property (Ajouter une propriété).
Saisissez la
Key(nom) et laValued'une propriété Spark compatible.
gcloud
Exemple d'envoi de lot gcloud CLI :
gcloud dataproc batches submit spark --properties=spark.checkpoint.compress=true \ --region=region \ other args ...
API
Définissez RuntimeConfig.properties avec les propriétés Spark compatibles dans le cadre d’une batches.create.
Propriétés Spark compatibles
Serverless pour Apache Spark est compatible avec la plupart des propriétés Spark, mais il
n’est pas compatible avec les propriétés Spark liées à YARN et au shuffle, telles que
spark.master=yarn et spark.shuffle.service.enabled. Si le code d'application Spark
définit une propriété YARN ou de shuffle, l'application échoue.
Propriétés de l'environnement d'exécution
Serverless pour Apache Spark est compatible avec les propriétés Spark personnalisées suivantes pour configurer l'environnement d'exécution :
| Propriété | Description |
|---|---|
spark.dataproc.driverEnv.ENVIRONMENT_VARIABLE_NAME |
Ajoutez ENVIRONMENT_VARIABLE_NAME au processus du pilote. Vous pouvez spécifier plusieurs variables d'environnement. |
spark.executorEnv.ENVIRONMENT_VARIABLE_NAME |
Ajoutez ENVIRONMENT_VARIABLE_NAME au processus de l'exécuteur. Vous pouvez spécifier plusieurs variables d'environnement. |
Propriété de niveau
| Propriété | Description | Par défaut |
|---|---|---|
dataproc.tier |
Niveau sur lequel une charge de travail par lot s'exécute, standard ou premium (voir Google Cloud Niveaux Serverless pour Apache Spark). Les sessions interactives
s'exécutent toujours au niveau dataproc.tier premium.
|
standard |
Propriétés du moteur et de l'environnement d'exécution
| Propriété | Description | Par défaut |
|---|---|---|
spark.dataproc.engine |
Moteur à utiliser pour exécuter la charge de travail par lot ou la session interactive : lightningEngine
(voir Lightning Engine) ou le moteur default.
|
|
spark.dataproc.lightningEngine.runtime |
Environnement d'exécution à utiliser lorsque Lightning Engine est sélectionné pour une charge de travail par lot ou une session interactive : default ou native (exécution de requêtes natives).
|
default |
Propriétés d'allocation des ressources
Serverless pour Apache Spark est compatible avec les propriétés Spark suivantes pour configurer l'allocation des ressources :
| Propriété | Description | Par défaut | Exemples |
|---|---|---|---|
spark.driver.cores |
Nombre de cœurs (processeurs virtuels) à allouer au pilote Spark.
Valeurs valides : 4, 8, 16. |
4 |
|
spark.driver.memory |
Quantité de mémoire à allouer au processus du pilote Spark, spécifiée au format de chaîne de mémoire JVM avec un suffixe d'unité de taille ("m", "g" ou "t"). Mémoire totale du pilote par cœur de pilote, y compris la surcharge de mémoire du pilote,
qui doit être comprise entre |
512m, 2g |
|
spark.driver.memoryOverhead |
Quantité de mémoire JVM supplémentaire à allouer au processus du pilote Spark spécifiée au format de chaîne de mémoire JVM avec un suffixe d"unité de taille ("m", "g" ou "t"). Il s'agit d'une mémoire hors tas associée aux surcharges JVM,
chaînes internes et à d'autres surcharges natives. Elle inclut
la mémoire utilisée par d'autres processus de pilote, tels que les processus de pilote PySpark,
et la mémoire utilisée par d'autres processus non pilotes s'exécutant dans le conteneur.
La taille maximale de la mémoire du conteneur dans lequel le pilote s'exécute est
déterminée par la somme de La mémoire totale du pilote par cœur de pilote, y compris la surcharge de mémoire du pilote,
doit être comprise entre |
10 % de la mémoire du pilote, sauf pour les charges de travail par lot PySpark, qui sont définies par défaut sur 40 % de la mémoire du pilote | 512m, 2g |
spark.dataproc.driver.compute.tier |
Niveau de calcul à utiliser sur le pilote. Le niveau de calcul premium offre des performances par cœur plus élevées, mais il est facturé à un tarif plus élevé. | standard | standard, premium |
spark.dataproc.driver.disk.size |
Quantité d'espace disque allouée au pilote,
spécifiée avec un suffixe d'unité de taille ("k", "m", "g" ou "t").
Doit être au moins 250GiB.
Si le niveau de disque premium est sélectionné sur le pilote, les tailles valides sont
375g, 750g, 1500g, 3000g, 6000g ou 9000g. Si le niveau de disque premium et 16 cœurs de pilote sont sélectionnés,
la taille minimale du disque est de 750g. |
100GiB par cœur |
1024g, 2t |
spark.dataproc.driver.disk.tier |
Niveau de disque à utiliser pour le stockage local et le stockage aléatoire sur le pilote.
Le niveau de disque premium offre de meilleures performances en termes d'IOPS et de débit, mais
il est facturé à un tarif plus élevé. Si le niveau de disque premium est sélectionné sur
le pilote, le niveau de calcul premium doit également être sélectionné à l'aide de
spark.dataproc.driver.compute.tier=premium,
et la quantité d'espace disque doit être spécifiée à l'aide de
spark.dataproc.executor.disk.size.
Si le niveau de disque premium est sélectionné, le pilote alloue 50 Gio d'espace disque supplémentaires pour le stockage système, qui n'est pas utilisable par les applications utilisateur. |
standard | standard, premium |
spark.executor.cores |
Nombre de cœurs (processeurs virtuels) à allouer à chaque exécuteur Spark.
Valeurs valides : 4, 8, 16. |
4 |
|
spark.executor.memory |
Quantité de mémoire à allouer à chaque processus d'exécuteur Spark, spécifiée au format de chaîne de mémoire JVM avec un suffixe d'unité de taille ("m", "g" ou "t"). La mémoire totale de l'exécuteur par cœur d'exécuteur, y compris la surcharge de mémoire de l'exécuteur, doit être comprise entre |
512m, 2g |
|
spark.executor.memoryOverhead |
Quantité de mémoire JVM supplémentaire à allouer au processus d'exécuteur Spark spécifiée au format de chaîne de mémoire JVM avec un suffixe d'unité de taille ("m", "g" ou "t"). Il s'agit d'une mémoire hors tas utilisée pour les surcharges JVM, les chaînes internes,
et d'autres surcharges natives. Elle inclut la mémoire de l'exécuteur PySpark et
la mémoire utilisée par d'autres processus non exécuteurs s'exécutant dans le conteneur.
La taille maximale de la mémoire du conteneur dans lequel l'exécuteur s'exécute est
déterminée par la somme de La mémoire totale de l'exécuteur par cœur d'exécuteur, y compris la surcharge de mémoire de l'exécuteur, doit être comprise entre |
10 % de la mémoire de l'exécuteur, sauf pour les charges de travail par lot PySpark, qui sont définies par défaut sur 40 % de la mémoire de l'exécuteur | 512m, 2g |
spark.dataproc.executor.compute.tier |
Niveau de calcul à utiliser sur les exécuteurs. Le niveau de calcul premium offre des performances par cœur plus élevées, mais il est facturé à un tarif plus élevé. | standard | standard, premium |
spark.dataproc.executor.disk.size |
Quantité d'espace disque allouée à chaque exécuteur,
spécifiée avec un suffixe d'unité de taille ("k", "m", "g" ou "t").
L'espace disque de l'exécuteur peut être utilisé pour les données de shuffle et pour préparer
les dépendances. Doit être au moins 250GiB.
Si le niveau de disque premium est sélectionné sur l'exécuteur, les tailles valides sont
375g, 750g, 1500g, 3000g, 6000g ou 9000g. Si le niveau de disque premium
et 16 cœurs d'exécuteur sont sélectionnés,
la taille minimale du disque est de 750g. |
100GiB par cœur |
1024g, 2t |
spark.dataproc.executor.disk.tier |
Niveau de disque à utiliser pour le stockage local et le stockage aléatoire sur les exécuteurs.
Le niveau de disque premium offre de meilleures performances en termes d'IOPS et de débit, mais
il est facturé à un tarif plus élevé. Si le niveau de disque premium est sélectionné sur l'
exécuteur, le niveau de calcul premium doit également être sélectionné à l'aide de
spark.dataproc.executor.compute.tier=premium,
et la quantité d'espace disque doit être spécifiée à l'aide de
spark.dataproc.executor.disk.size.
Si le niveau de disque premium est sélectionné, 50 Gio d'espace disque supplémentaires sont alloués à chaque exécuteur pour le stockage système, qui n'est pas utilisable par les applications utilisateur. |
standard | standard, premium |
spark.executor.instances |
Nombre initial d'exécuteurs à allouer. Une fois qu'une charge de travail par lot
a démarré, l'autoscaling peut modifier le nombre d'exécuteurs actifs. Doit être
au moins 2 et au plus 2000. |
Propriétés de l'autoscaling
Consultez Propriétés d'allocation dynamique Spark pour obtenir la liste des propriétés Spark que vous pouvez utiliser pour configurer l'autoscaling Serverless pour Apache Spark.
Propriétés de journalisation
| Propriété | Description | Par défaut | Exemples |
|---|---|---|---|
spark.log.level |
Lorsqu'il est défini, remplace tous les paramètres de journalisation définis par l'utilisateur par l'effet d'
un appel à SparkContext.setLogLevel() au démarrage de Spark. Les niveaux de journalisation valides incluent : ALL, DEBUG, ERROR, FATAL, INFO, OFF, TRACE, et WARN. |
INFO, DEBUG |
|
spark.executor.syncLogLevel.enabled |
Lorsque la valeur est true, le niveau de journalisation appliqué via
la SparkContext.setLogLevel() méthode est
propagé à tous les exécuteurs. |
false |
true, false |
spark.log.level.PackageName |
Lorsqu'il est défini, remplace tous les paramètres de journalisation définis par l'utilisateur
avec l'effet d'un appel à SparkContext.setLogLevel(PackageName, level)
au démarrage de Spark. Les niveaux de journalisation valides incluent : ALL, DEBUG,
ERROR, FATAL, INFO, OFF,
TRACE, et WARN. |
spark.log.level.org.apache.spark=error |
Propriétés de planification
| Propriété | Description | Par défaut | Exemples |
|---|---|---|---|
spark.scheduler.excludeShuffleSkewExecutors |
Excluez les exécuteurs biaisés de la carte de shuffle lors de la planification, ce qui peut réduire les longs temps d'attente de récupération du shuffle causés par le biais d'écriture du shuffle. | false |
true |
spark.scheduler.shuffleSkew.minFinishedTasks |
Nombre minimal de tâches de carte de shuffle terminées sur un exécuteur à traiter comme biais. | 10 |
100 |
spark.scheduler.shuffleSkew.maxExecutorsNumber |
Nombre maximal d'exécuteurs à traiter comme biais. Les exécuteurs biaisés sont exclus du cycle de planification actuel. | 5 | 10 |
spark.scheduler.shuffleSkew.maxExecutorsRatio |
Ratio maximal d'exécuteurs totaux à traiter comme biais. Les exécuteurs biaisés sont exclus de la planification. | 0,05 | 0.1 |
spark.scheduler.shuffleSkew.ratio |
Multiple des tâches de carte de shuffle terminées en moyenne sur un exécuteur à traiter comme biais. | 1,5 | 2.0 |
Autres propriétés
| Propriété | Description |
|---|---|
dataproc.diagnostics.enabled |
Activez cette propriété pour exécuter des diagnostics en cas d'échec ou d'annulation d'une charge de travail par lot. Si les diagnostics sont activés, votre charge de travail par lot continue d'utiliser des ressources de calcul une fois la charge de travail terminée, jusqu'à la fin des diagnostics. Un URI pointant vers l'emplacement du fichier tar de diagnostic est répertorié dans le Batch.RuntimeInfo.diagnosticOutputUri. |
dataproc.gcsConnector.version |
Utilisez cette propriété pour passer à une version du connecteur Cloud Storage différente de celle installée avec la version d'exécution de votre charge de travail par lot. |
dataproc.sparkBqConnector.version |
Utilisez cette propriété pour passer à une version du connecteur Spark BigQuery différente de celle installée avec la version d'exécution de votre charge de travail par lot (voir Utiliser le connecteur BigQuery avec Serverless pour Apache Spark). |
dataproc.profiling.enabled |
Définissez cette propriété sur true pour activer le profilage de la
charge de travail Serverless pour Apache Spark. |
dataproc.profiling.name |
Utilisez cette propriété pour définir le nom utilisé pour créer un profil sur le Profiler service. |
spark.jars |
Utilisez cette propriété pour définir la liste de fichiers JAR séparés par des virgules à inclure dans les chemins de classe du pilote et de l'exécuteur. |
spark.archives |
Utilisez cette propriété pour définir la liste d'archives séparées par des virgules à extraire dans le répertoire de travail de chaque exécuteur. Les formats .jar, .tar.gz, .tgz et .zip sont acceptés. Pour les sessions interactives sans serveur, ajoutez cette propriété lors de la création d'une session/d'un modèle interactif. |
dataproc.artifacts.remove |
Utilisez cette propriété pour supprimer les artefacts par défaut installés sur
les environnements d'exécution Serverless pour Apache Spark.
Les artefacts compatibles sont spark-bigquery-connector,
iceberg, et delta-lake. |