Améliorations des performances de Dataproc Spark

Ce document vous explique comment activer les améliorations des performances de Dataproc Spark pour aider vos jobs Dataproc Spark à traiter plus de données en moins de temps et à moindre coût.

Voici quelques exemples d'améliorations des performances de Spark dans Dataproc :

  • Améliorations de l'outil d'optimisation Spark :
    • Règles de l'optimiseur écrites pour de meilleurs plans Spark
    • Amélioration des performances du connecteur Dataproc BigQuery lorsqu'il est utilisé dans des jobs Spark
  • Améliorations de l'exécution Spark :
    • Améliorations du moteur d'exécution Spark

Autres améliorations des performances de Dataproc : consultez la section sur la mise en cache des clusters Dataproc, qui permet de réduire le temps passé à accéder aux données dans Cloud Storage.

Vous pouvez activer les améliorations des performances Spark sur un cluster ou sur un job Spark :

Tarifs

Les améliorations des performances de Spark n'entraînent pas de frais supplémentaires. La tarification standard de Dataproc sur Compute Engine s'applique.

Remarques

L'amélioration des performances de Spark ajuste les propriétés Spark, y compris les suivantes :

  • spark.sql.shuffle.partitions : les améliorations des performances de Spark définissent cette propriété sur 1000 pour les clusters de version d'image 2.2. Ce paramètre peut ralentir les petits jobs.
  • spark.dataproc.sql.catalog.file.index.stats.enabled : ce paramètre peut entraîner des conditions OOM (Out-Of-Memory) du pilote si le nombre de partitions Hive est élevé. La désactivation de cette propriété peut résoudre la condition OOM.

Activer les améliorations lors de la création du cluster

Vous pouvez utiliser la console Google Cloud , Google Cloud CLI et l'API Dataproc pour activer les améliorations des performances Spark de Dataproc lorsque vous créez un cluster Dataproc avec les versions d'image 2.0.69+, 2.1.17+, 2.2.0+ et les versions d'image ultérieures.

Console

  1. Dans la console Google Cloud , ouvrez la page Dataproc Créer un cluster.
  2. Dans le formulaire Créer un cluster Dataproc, cliquez sur Créer sur la ligne Cluster sur Compute Engine.
  3. Sur la page Créer un cluster Dataproc sur Compute Engine, cliquez sur le panneau Personnaliser le cluster, puis faites défiler la page jusqu'à la section Propriétés du cluster.
    1. Pour activer les améliorations de l'optimisation Spark :
      1. Cliquez sur + AJOUTER DES PROPRIÉTÉS.
      2. Sélectionnez spark dans la liste Préfixe, puis ajoutez "spark.dataproc.enhanced.optimizer.enabled" dans le champ Clé et "true" dans le champ Valeur.
    2. Pour activer les améliorations de l'exécution Spark :
      1. Cliquez sur + AJOUTER DES PROPRIÉTÉS.
      2. Sélectionnez spark dans la liste Préfixe, puis ajoutez "spark.dataproc.enhanced.execution.enabled" dans le champ Clé et "true" dans le champ Valeur.
  4. Renseignez ou confirmez les autres champs de création de cluster, puis cliquez sur Créer.

gcloud

  1. Exécutez en local la commande gcloud dataproc clusters create dans une fenêtre de terminal ou dans Cloud Shell.

    gcloud dataproc clusters create CLUSTER_NAME \
        --project=PROJECT_ID \
        --region=REGION \
        --image-version=IMAGE \
        --properties=PROPERTIES
    

    Remarques :

    • CLUSTER_NAME : nom du cluster, qui doit être unique dans un projet. Le nom doit commencer par une lettre minuscule et peut contenir jusqu'à 51 lettres minuscules, chiffres et traits d'union. Il ne peut pas se terminer par un trait d'union. Le nom d'un cluster supprimé peut être réutilisé.
    • PROJECT_ID : projet à associer au cluster.
    • REGION : région Compute Engine dans laquelle le cluster sera situé, par exemple us-central1.
      • Vous pouvez ajouter l'option facultative --zone=ZONE pour spécifier une zone dans la région indiquée, par exemple us-central1-a. Si vous ne spécifiez pas de zone, la fonctionnalité de sélection de zone automatique de Dataproc en choisit une dans la région spécifiée.
    • IMAGE : les améliorations des performances d'exécution et de l'optimiseur Spark de Dataproc sont disponibles dans les versions d'image Dataproc 2.0.69+ et 2.1.17+, ainsi que dans les versions ultérieures. Si vous omettez cet indicateur, Dataproc sélectionnera la dernière version mineure de l'image Dataproc sur Compute Engine par défaut pour le cluster (voir Version d'image Dataproc par défaut).
    • PROPERTIES :

      • Pour activer les améliorations de l'optimisation Spark, spécifiez :
      spark:spark.dataproc.enhanced.optimizer.enabled=true
      
      • Pour activer les améliorations de l'exécution Spark, spécifiez :
      spark:spark.dataproc.enhanced.execution.enabled=true
      
      • Pour activer les améliorations de l'optimisation et de l'exécution de Spark, spécifiez :
      spark:spark.dataproc.enhanced.optimizer.enabled=true,spark:spark.dataproc.enhanced.execution.enabled=true
      

API

  1. Spécifiez les SoftwareConfig.properties suivants dans une requête clusters.create :

    • Pour activer les améliorations de l'optimisation Spark, spécifiez :
    "spark:spark.dataproc.enhanced.optimizer.enabled": "true"
    
    • Pour activer les améliorations de l'exécution Spark, spécifiez :
    "spark:spark.dataproc.enhanced.execution.enabled": "true"
    
    • Pour activer les améliorations de l'optimisation et de l'exécution Spark, spécifiez :
    "spark:spark.dataproc.enhanced.optimizer.enabled": "true","spark:spark.dataproc.enhanced.execution.enabled": "true"
    

Activer ou désactiver les améliorations lors de l'envoi d'un job

Vous pouvez utiliser la console Google Cloud , Google Cloud CLI et l'API Dataproc pour activer ou désactiver les améliorations des performances Spark sur un job Spark envoyé au service Dataproc.

Console

  1. Dans la console Google Cloud , ouvrez la page Dataproc Jobs.
  2. Sur la page Jobs, cliquez sur Submit job (Envoyer un job), puis faites défiler la page jusqu'à la section Properties (Propriétés) du job.
    1. Pour activer les améliorations de l'optimisation Spark :
      1. Cliquez sur + AJOUTER DES PROPRIÉTÉS. Ajoutez "spark.dataproc.enhanced.optimizer.enabled" dans le champ Clé et "true" dans le champ Valeur.
    2. Pour activer les améliorations de l'exécution Spark :
      1. Cliquez sur + AJOUTER DES PROPRIÉTÉS.
      2. Ajoutez "spark.dataproc.enhanced.execution.enabled" dans le champ Clé et "true" dans le champ Valeur.
  3. Remplissez ou confirmez les autres champs d'envoi de tâches, puis cliquez sur Envoyer.

gcloud

  1. Exécutez en local la commande gcloud dataproc jobs submit dans une fenêtre de terminal ou dans Cloud Shell.

    gcloud dataproc jobs submit SPARK_JOB_TYPE \
        --cluster=CLUSTER_NAME \
        --region=REGION \
        --properties=PROPERTIES
    

    Remarques :

    • SPARK_JOB_TYPE : spécifiez spark, pyspark, spark-sql ou spark-r .
    • CLUSTER_NAME : nom de la tâche dans laquelle le job sera exécuté.
    • REGION : région dans laquelle se trouve le cluster.
    • PROPERTIES :

      • Pour activer les améliorations de l'optimisation Spark, spécifiez :
      spark.dataproc.enhanced.optimizer.enabled=true
      
      • Pour activer les améliorations de l'exécution Spark, spécifiez :
      spark.dataproc.enhanced.execution.enabled=true
      
      • Pour activer les améliorations de l'optimisation et de l'exécution de Spark, spécifiez :
      spark.dataproc.enhanced.optimizer.enabled=true,spark.dataproc.enhanced.execution.enabled=true
      

API

  1. Spécifiez les properties suivants pour un SparkJob, un PySparkJob, un SparkSqlJob ou un SparkRJob dans une requête jobs.submit :

    • Pour activer les améliorations de l'optimisation Spark, spécifiez :
    "spark.dataproc.enhanced.optimizer.enabled=true"
    
    • Pour activer les améliorations de l'exécution Spark, spécifiez :
    "spark.dataproc.enhanced.execution.enabled=true"
    
    • Pour activer les améliorations de l'optimisation et de l'exécution de Spark, spécifiez :
    "spark.dataproc.enhanced.execution.enabled=true,spark.dataproc.enhanced.optimizer.enabled=true"