Ce document décrit les propriétés Spark et explique comment les définir. Dataproc sans serveur utilise des 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 avoir une incidence sur la consommation et le coût des quotas de charge de travail. Pour en savoir plus, consultez les pages Quotas Dataproc sans serveur et Tarifs de Dataproc sans serveur.
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 sans serveur Dataproc à l'aide de la console Google Cloud, de gcloud CLI ou de l'API Dataproc.
Console
Dans la console Google Cloud, accédez à la page Créer un lot Dataproc.
Dans la section Propriétés, cliquez sur Ajouter une propriété.
Saisissez le
Key
(nom) et leValue
d'une propriété Spark compatible.
gcloud
Exemple d'envoi par lot avec 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 requête batches.create.
Propriétés Spark compatibles
Dataproc sans serveur pour Spark est compatible avec la plupart des propriétés Spark, mais pas avec les propriétés Spark liées à YARN et au mélange, telles que spark.master=yarn
et spark.shuffle.service.enabled
. Si le code de l'application Spark définit une propriété YARN ou de mélange, l'application échoue.
Propriétés de l'environnement d'exécution
Dataproc sans serveur pour 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.EnvironmentVariableName |
Ajoutez le EnvironmentVariableName au processus du pilote. Vous pouvez spécifier plusieurs variables d'environnement. |
Propriétés d'allocation des ressources
Dataproc sans serveur pour Spark est compatible avec les propriétés Spark suivantes pour configurer l'allocation de ressources:
Propriété | Description | Par défaut | Examples |
---|---|---|---|
spark.driver.cores |
Nombre de cœurs (vCPU) à allouer au pilote Spark.
Valeurs valides: 4 , 8 et 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 les frais généraux 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 de la mémoire hors tas associée aux frais généraux de la JVM, aux chaînes internes et à d'autres frais généraux natifs. Elle comprend 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 exécutés dans le conteneur.
La taille de mémoire maximale 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 les frais généraux de mémoire du pilote, doit être comprise entre |
10% de la mémoire du pilote, à l'exception des charges de travail par lot PySpark, qui utilisent par défaut 40% de la mémoire du pilote | 512m , 2g |
spark.dataproc.driver.compute.tier |
Niveau de calcul à utiliser pour 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").
Au moins 250GiB .
Si le niveau de disque Premium est sélectionné sur le pilote, les tailles valides sont 375 Go, 750 Go, 1 500 Go, 3 000 Go, 6 000 Go ou 9 000 Go. Si le niveau de disque Premium et 16 cœurs de pilote sont sélectionnés, la taille de disque minimale est de 750 Go. |
100GiB par cœur |
1024g , 2t |
spark.dataproc.driver.disk.tier |
Niveau de disque à utiliser pour le stockage local et 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 Go d'espace disque supplémentaire pour le stockage système, qui n'est pas utilisable par les applications utilisateur. | standard | standard, premium |
spark.executor.cores |
Nombre de cœurs (vCPU) à allouer à chaque exécuteur Spark.
Valeurs valides: 4 , 8 et 16 . |
4 |
|
spark.executor.memory |
Quantité de mémoire à allouer à chaque processus d'exécution 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 les frais généraux 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écution 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 de la 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 exécutés dans le conteneur.
La taille de mémoire maximale 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 les frais généraux de mémoire de l'exécuteur, doit être comprise entre |
10% de la mémoire de l'exécuteur, à l'exception des charges de travail par lot PySpark, qui utilisent par défaut 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 mélanger des données et mettre en scène des dépendances. Au moins 250GiB .
Si le niveau de disque Premium est sélectionné sur l'exécuteur, les tailles valides sont 375 Go, 750 Go, 1 500 Go, 3 000 Go, 6 000 Go ou 9 000 Go. Si vous sélectionnez le niveau de disque Premium et 16 cœurs d'exécuteur, la taille de disque minimale est de 750 Go. |
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écutant, 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émentaire 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 une charge de travail par lot lancée, l'autoscaling peut modifier le nombre d'exécuteurs actifs. Doit être supérieur ou égal à 2 et inférieur ou égal à 2000 . |
Propriétés de l'autoscaling
Consultez la section Propriétés d'allocation dynamique Spark pour obtenir une liste des propriétés Spark que vous pouvez utiliser pour configurer l'autoscaling Dataproc sans serveur.
Propriétés de journalisation
Propriété | Description | Par défaut | Examples |
---|---|---|---|
spark.log.level |
Lorsqu'il est défini, il remplace tous les paramètres de journalisation définis par l'utilisateur, ce qui a pour effet d'appeler SparkContext.setLogLevel() au démarrage de Spark. Les niveaux de journalisation valides sont les suivants: ALL , DEBUG , ERROR , FATAL , INFO , OFF , TRACE et WARN . |
INFO , DEBUG |
|
spark.executor.syncLogLevel.enabled |
Lorsque la valeur est définie sur true , le niveau de journalisation appliqué via la méthode SparkContext.setLogLevel() est propagé à tous les exécuteurs. |
false |
true , false |
spark.log.level.PackageName |
Lorsqu'il est défini, il 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 sont les suivants: 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 | Examples |
---|---|---|---|
spark.scheduler.excludeShuffleSkewExecutors |
Excluez les exécuteurs de mappage de mélange déformés lors de la planification, ce qui peut réduire les temps d'attente de récupération de mélange longs causés par le décalage d'écriture de mélange. | false |
true |
spark.scheduler.shuffleSkew.minFinishedTasks |
Nombre minimal de tâches de mappage de mélange terminées sur un exécuteur à traiter comme un décalage. | 10 |
100 |
spark.scheduler.shuffleSkew.maxExecutorsNumber |
Nombre maximal d'exécuteurs à traiter comme un décalage. Les exécuteurs biaisés sont exclus de la série de planification actuelle. | 5 | 10 |
spark.scheduler.shuffleSkew.maxExecutorsRatio |
Ratio maximal du nombre total d'exécuteurs à traiter comme un biais. Les exécuteurs biaisés sont exclus de la planification. | 0,05 | 0.1 |
spark.scheduler.shuffleSkew.ratio |
Multiple du nombre moyen de tâches de mappage de mélange terminées sur un exécuteur à traiter comme un décalage. | 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 tarball de diagnostic est listé dans le champ de l'API 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 BigQuery Spark 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 Dataproc sans serveur pour Spark). |
dataproc.profiling.enabled |
Définissez cette propriété sur true pour activer le profilage de la charge de travail Dataproc sans serveur. |
dataproc.profiling.name |
Utilisez cette propriété pour définir le nom utilisé pour créer un profil sur le service Profiler. |