Ce document vous explique comment activer les améliorations des performances de Spark dans Managed Service pour Apache Spark afin d'aider vos jobs Managed Service pour Apache Spark à traiter plus de données en moins de temps et à moindre coût.
Les améliorations des performances de Managed Service pour Apache Spark incluent les éléments suivants :
- Améliorations de l'optimiseur :
- Règles d'optimiseur écrites pour de meilleurs plans Spark
- Amélioration des performances du connecteur BigQuery Managed Service pour Apache Spark 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 Managed Service pour Apache Spark : consultez la mise en cache des clusters Managed Service pour Apache Spark , qui permet de réduire le temps d'accès aux données dans Cloud Storage.
Vous pouvez activer les améliorations des performances de Spark sur un cluster ou sur un job Spark :
Les améliorations des performances de Spark activées sur un cluster s'appliquent, par défaut, à tous les jobs Spark exécutés sur le cluster, qu'ils soient envoyés au service Managed Service pour Apache Spark ou directement au cluster.
Les améliorations des performances de Spark peuvent également être activées ou désactivées sur un job envoyé à Managed Service pour Apache Spark. Les paramètres d'amélioration des performances de Spark appliqués à un job remplacent tous les paramètres conflictuels définis au niveau du cluster pour le job spécifié uniquement.
Tarifs
Les améliorations des performances de Spark n'entraînent pas de frais supplémentaires. La tarification standard de Managed Service pour Apache Spark s'applique.
Remarques
Les améliorations des performances de Spark ajustent 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é sur1000pour les clusters de version d'image2.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 Google Cloud console , Google Cloud CLI et l'API Managed Service pour Apache Spark pour activer les améliorations des performances de Managed Service pour Apache Spark lorsque vous créez un cluster Managed Service pour Apache Spark avec les versions d'image 2.0.69+, 2.1.17+, 2.2.0+ et les versions d'image ultérieures.
Console
- Dans la Google Cloud console, ouvrez la page Managed Service pour Apache Spark Créer un cluster.
- Dans le formulaire Créer un cluster Managed Service pour Apache Spark, cliquez sur Créer sur la ligne Cluster.
- Sur la page Créer un cluster Managed Service pour Apache Spark , cliquez sur le panneau Personnaliser le cluster, puis faites défiler la page jusqu'à la section Propriétés du cluster.
- Pour activer les améliorations de l'optimisation Spark :
- Cliquez sur + AJOUTER DES PROPRIÉTÉS.
- 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.
- Pour activer les améliorations de l'exécution Spark :
- Cliquez sur + AJOUTER DES PROPRIÉTÉS.
- 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.
- Pour activer les améliorations de l'optimisation Spark :
- Remplissez ou confirmez les autres champs de création de cluster, puis cliquez sur Créer.
gcloud
Exécutez en local la commande gcloud dataproc clusters create suivante 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=ZONEindicateur pour spécifier une zone dans la région spécifiée, par exempleus-central1-a. Si vous ne spécifiez pas de zone, la fonctionnalité de placement automatique des zones de Managed Service pour Apache Spark en sélectionne une dans la région spécifiée.
- Vous pouvez ajouter l'option facultative
- IMAGE : les améliorations des performances d'optimisation et d'exécution de Managed Service pour Apache Spark
sont disponibles dans les versions d'image
2.0.69+et2.1.17+de Managed Service pour Apache Spark ainsi que dans les versions ultérieures. Si vous omettez cet indicateur, Managed Service pour Apache Spark sélectionne la dernière version sous-mineure de l'image Managed Service pour Apache Spark par défaut pour le cluster (voir Version d'image Managed Service pour Apache Spark 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 Spark, spécifiez :
spark:spark.dataproc.enhanced.optimizer.enabled=true,spark:spark.dataproc.enhanced.execution.enabled=true
API
Spécifiez les éléments suivants
SoftwareConfig.propertiesdans le cadre d'une requêteclusters.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 du job
Vous pouvez utiliser la Google Cloud console , Google Cloud CLI et l'API Managed Service pour Apache Spark pour activer ou désactiver les améliorations des performances de Spark sur un job Spark envoyé à Managed Service pour Apache Spark.
Console
- Dans la Google Cloud console, ouvrez la page Managed Service pour Apache Spark Jobs.
- Sur la page Jobs, cliquez sur Envoyer un job, puis faites défiler la page jusqu'à la section
Propriétés du job.
- Pour activer les améliorations de l'optimisation Spark :
- Cliquez sur + AJOUTER DES PROPRIÉTÉS. Ajoutez "spark.dataproc.enhanced.optimizer.enabled" dans le champ Clé et "true" dans le champ Valeur.
- Pour activer les améliorations de l'exécution Spark :
- Cliquez sur + AJOUTER DES PROPRIÉTÉS.
- Ajoutez "spark.dataproc.enhanced.execution.enabled" dans le champ Clé et "true" dans le champ Valeur.
- Pour activer les améliorations de l'optimisation Spark :
- Remplissez ou confirmez les autres champs d'envoi de job, puis cliquez sur Envoyer.
gcloud
Exécutez en local la commande gcloud dataproc jobs submit suivante 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-sqlouspark-r. - CLUSTER_NAME : nom du job dans lequel 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 Spark, spécifiez :
spark.dataproc.enhanced.optimizer.enabled=true,spark.dataproc.enhanced.execution.enabled=true
- SPARK_JOB_TYPE : spécifiez
API
Spécifiez les
propertiessuivants pour un SparkJob, PySparkJob, SparkSqlJob, ou SparkRJob dans le cadre d'unejobs.submitrequête :- 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 Spark, spécifiez :
"spark.dataproc.enhanced.execution.enabled=true,spark.dataproc.enhanced.optimizer.enabled=true"