Propriétés Spark

Dataproc sans serveur 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 et le coût des quotas de charge de travail (consultez les pages Quotas sans serveur et Tarifs de Dataproc sans serveur pour en savoir plus).

Définir les propriétés des charges 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

  1. Accédez à la page Créer un lot Dataproc dans la console Google Cloud.

  2. Dans la section Properties (Propriétés), cliquez sur Add Property (Ajouter une propriété), puis saisissez le Key (nom) et le Value d'une propriété Spark compatible.

gcloud

Exemple d'envoi par lots 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 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 brassage, telles que spark.master=yarn et spark.shuffle.service.enabled. Si le code d'application Spark définit une propriété YARN ou de brassage, l'application échouera.

Propriétés de l'environnement d'exécution

Dataproc sans serveur pour Spark accepte les propriétés Spark personnalisées suivantes pour la configuration de l'environnement d'exécution:

Propriété Description
spark.dataproc.driverEnv.EnvironmentVariableName Ajoutez 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 la configuration de l'allocation des ressources:

Propriété Description Par défaut Examples
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 de pilote par cœur de pilote, y compris la surcharge de la mémoire du pilote, qui doit être comprise entre 1024m et 7424m pour le niveau de calcul Standard (24576m pour le niveau de calcul Premium). Par exemple, si spark.driver.cores = 4, alors 4096m <= spark.driver.memory + spark.driver.memoryOverhead <= 29696m.

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 mémoire sans tas de mémoire 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 autres que des pilotes exécutés 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 spark.driver.memoryOverhead plus spark.driver.memory.

La mémoire totale du pilote par cœur de pilote, y compris la surcharge de la mémoire du pilote, doit être comprise entre 1024m et 7424m pour le niveau de calcul Standard (24576m pour le niveau de calcul Premium). Par exemple, si spark.driver.cores = 4, alors 4096m <= spark.driver.memory + spark.driver.memoryOverhead <= 29696m.

10% de la mémoire du pilote, à l'exception des charges de travail par lot PySpark, qui utilisent 40% de la mémoire par défaut 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 est facturé à un tarif plus élevé. standard standard, premium
spark.dataproc.driver.disk.size Quantité d'espace disque alloué 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é au niveau du pilote, les tailles valides sont 375 g, 750 g, 1 500 g, 3 000 g, 6 000 g ou 9 000 g. 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 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 avec spark.dataproc.executor.disk.size.

Si le niveau de disque Premium est sélectionné, le pilote alloue 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.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é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 la surcharge de la mémoire de l'exécuteur, doit être comprise entre 1024m et 7424m pour le niveau de calcul Standard (24576m pour le niveau de calcul Premium). Par exemple, si spark.executor.cores = 4, alors 4096m <= spark.executor.memory + spark.executor.memoryOverhead <= 29696m.

512m, 2g
spark.executor.memoryOverhead

Quantité de mémoire JVM supplémentaire à allouer au processus de l'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 mémoire sans tas de mémoire 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 les 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 spark.executor.memoryOverhead plus spark.executor.memory.

La mémoire totale de l'exécuteur par cœur d'exécuteur, y compris la surcharge de la mémoire de l'exécuteur, doit être comprise entre 1024m et 7424m pour le niveau de calcul Standard (24576m pour le niveau de calcul Premium). Par exemple, si spark.executor.cores = 4, alors 4096m <= spark.executor.memory + spark.executor.memoryOverhead <= 29696m.

10% de la mémoire de l'exécuteur, à l'exception des charges de travail par lot PySpark, qui disposent par défaut de 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 est facturé à un tarif plus élevé. standard standard, premium
spark.dataproc.executor.disk.size Quantité d'espace disque alloué à 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 le brassage des données et la préproduction des dépendances. Au moins 250GiB. Si le niveau de disque Premium est sélectionné sur l'exécuteur, les tailles valides sont 375, 750, 1 500, 3 000, 6 000 ou 9 000 g. 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 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. Après le démarrage d'une charge de travail par lot, l'autoscaling peut modifier le nombre d'exécuteurs actifs. Doit être au moins égal à 2 et au maximum à 2000.

Propriétés de l'autoscaling

Consultez la section Propriétés d'allocation dynamique Spark pour obtenir la liste des propriétés Spark que vous pouvez utiliser pour configurer l'autoscaling sans serveur de Dataproc.

Autres propriétés

Propriété Description
dataproc.diagnostics.enabled Activez cette propriété pour exécuter des diagnostics sur l'échec ou l'annulation d'une charge de travail par lot. Si les diagnostics sont activés, votre charge de travail par lot continue d'utiliser les 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 package tarball de diagnostic est répertorié dans le champ d'API Batch.RuntimeInfo.diagnosticOutputUri.
dataproc.gcsConnector.version Utilisez cette propriété pour effectuer la mise à niveau vers une version du connecteur Cloud Storage différente de la version installée avec la version d'exécution de votre charge de travail par lot.
dataproc.sparkBqConnector.version Utilisez cette propriété pour effectuer une mise à niveau vers une version du connecteur BigQuery Spark différente de la version installée avec la version d'exécution de votre charge de travail par lot (consultez la section Utiliser le connecteur BigQuery avec Dataproc sans serveur pour Spark).