Managed Service 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é ont une incidence sur la consommation et le coût des quotas de charge de travail. Pour en savoir plus, consultez les quotas de Managed Service pour Apache Spark et la tarification de Managed Service pour Apache Spark.
Pour configurer les propriétés qui contrôlent la collecte de métriques, consultez Métriques 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 Managed Service pour Apache Spark à l'aide de la console Google Cloud , de la gcloud CLI ou de l'API Dataproc.
Console
Dans la console Google Cloud , accédez à la page Créer un lot Managed Service pour Apache Spark.
Accéder à la page "Créer un lot" de Managed Service pour Apache Spark
Dans la section Propriétés, cliquez sur Ajouter une propriété.
Saisissez le
Key(nom) et laValued'une propriété Spark compatible.
gcloud
Voici un exemple d'envoi de lot avec gcloud CLI. Les propriétés multiples sont séparées par une virgule.
gcloud dataproc batches submit spark \ --properties=spark.checkpoint.compress=true,spark.driver.cores=8 \ --region=REGION \ other args ...
API
Définissez RuntimeConfig.properties avec les propriétés Spark compatibles dans une requête batches.create.
Propriétés Spark compatibles
Managed Service pour Apache Spark est compatible avec la plupart des propriétés Spark, mais pas avec les propriétés Spark liées à YARN et au brassage, 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 brassage, l'application échouera.
Propriétés de l'environnement d'exécution
Managed Service pour Apache Spark accepte 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 d'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, soit standard, soit premium (voir Niveaux de Managed Service pour Apache Spark). Les sessions interactives s'exécutent toujours au niveau Premium dataproc.tier.
|
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 Moteur Lightning) 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
Managed Service pour Apache Spark accepte 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 (vCPU) à 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 de la mémoire non-tas associée aux frais généraux de la JVM, aux chaînes internes et à d'autres frais généraux natifs. 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-pilote 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 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 utilisent par défaut 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").
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 750 Go. |
100GiB par cœur |
1024g, 2t |
spark.dataproc.driver.disk.tier |
Niveau de disque à utiliser pour le stockage local et de brassage 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 (vCPU) à 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 de la mémoire hors tas utilisée pour les frais généraux de la JVM, les chaînes internes et d'autres frais généraux natifs. 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 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 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 les données de brassage et pour l'organisation des dépendances. 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 750 Go. |
100GiB par cœur |
1024g, 2t |
spark.dataproc.executor.disk.tier |
Niveau de disque à utiliser pour le stockage local et de brassage 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é, chaque exécuteur se voit allouer 50 Gio d'espace disque supplémentaire 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 démarre, l'autoscaling peut modifier le nombre d'exécuteurs actifs. Doit être compris entre 2 et 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 de Managed Service 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 journal définis par l'utilisateur par l'effet d'un appel à 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 |
Lorsqu'il est défini 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 journal définis par l'utilisateur par 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 | Exemples |
|---|---|---|---|
spark.scheduler.excludeShuffleSkewExecutors |
Excluez les exécuteurs asymétriques de mappage de brassage lors de la planification, ce qui peut réduire les longs temps d'attente de récupération de brassage causés par l'asymétrie d'écriture de brassage. | false |
true |
spark.scheduler.shuffleSkew.minFinishedTasks |
Nombre minimal de tâches de mappage de brassage terminées sur un exécuteur à traiter comme un décalage. | 10 |
100 |
spark.scheduler.shuffleSkew.maxExecutorsNumber |
Nombre maximal d'exécuteurs à traiter comme asymétriques. Les exécuteurs asymétriques sont exclus du cycle de planification actuel. | 5 | 10 |
spark.scheduler.shuffleSkew.maxExecutorsRatio |
Ratio maximal du nombre total d'exécuteurs à traiter comme asymétriques. Les exécuteurs asymétriques sont exclus de la planification. | 0,05 | 0.1 |
spark.scheduler.shuffleSkew.ratio |
Multiple du nombre moyen de tâches de mappage de brassage 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 |
**Compatible uniquement avec les environnements d'exécution 2.3 et antérieurs**. 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 qu'elle est terminée, jusqu'à ce que les diagnostics soient terminés. Un URI pointant vers l'emplacement du fichier tar de diagnostic est listé dans le champ d'API Batch.RuntimeInfo.diagnosticOutputUri. |
dataproc.gcsConnector.version |
**Compatible uniquement avec les environnements d'exécution 2.3 et antérieurs**. 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 |
**Compatible uniquement avec les environnements d'exécution 2.3 et antérieurs**. 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 (consultez Utiliser le connecteur BigQuery avec Managed Service pour Apache Spark). |
dataproc.profiling.enabled |
**Compatible uniquement avec les environnements d'exécution 2.3 et antérieurs**. Définissez cette propriété sur true pour activer le profilage de la charge de travail Managed Service pour Apache Spark. |
dataproc.profiling.name |
**Pris en charge uniquement dans les environnements d'exécution 2.3 et versions antérieures** Utilisez cette propriété pour définir le nom utilisé pour créer un profil sur le service Profiler. |
spark.jars |
Utilisez cette propriété pour définir la liste d'éléments séparés par une virgule des fichiers JAR à inclure dans les paramètres classpath du pilote et de l'exécuteur. |
spark.archives |
Utilisez cette propriété pour définir la liste d'éléments séparés par une virgule des archives à 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 interactive ou d'un profil d'exécution (modèle de session). |
dataproc.artifacts.remove |
Utilisez cette propriété pour supprimer les artefacts par défaut installés sur les environnements d'exécution Managed Service pour Apache Spark.
Les artefacts compatibles sont conscrypt, delta-lake, iceberg, rapids et spark-bigquery-connector. |