Pour identifier les charges de travail par lot qui peuvent s'exécuter plus rapidement avec l'exécution de requêtes natives (NQE), vous pouvez utiliser l'outil de qualification. Cet outil analyse les journaux d'événements Spark pour estimer les économies de temps d'exécution potentielles et identifier les opérations non compatibles avec le moteur NQE.
Google Cloud propose deux méthodes pour exécuter l'analyse de qualification : le job de qualification et le script de qualification. L'approche recommandée pour la plupart des utilisateurs est le job de qualification, qui automatise la découverte et l'analyse des charges de travail par lot. Le script de qualification alternatif est disponible pour le cas d'utilisation spécifique de l'analyse d'un fichier journal d'événements connu. Choisissez la méthode qui correspond le mieux à votre cas d'utilisation :
Job de qualification (recommandé) : il s'agit de la méthode principale et recommandée. Il s'agit d'un job PySpark qui découvre et analyse automatiquement les charges de travail par lot récentes dans un ou plusieurs Google Cloud projets et régions. Utilisez cette méthode lorsque vous souhaitez effectuer une analyse globale sans avoir à localiser manuellement des fichiers journaux d'événements individuels. Cette approche est idéale pour évaluer à grande échelle l'adéquation de la NQE.
Script de qualification (alternatif) : il s'agit d'une méthode alternative pour les cas d'utilisation avancés ou spécifiques. Il s'agit d'un script shell qui analyse un seul fichier journal d'événements Spark ou tous les journaux d'événements d'un répertoire Cloud Storage spécifique. Utilisez cette méthode si vous disposez du chemin d'accès Cloud Storage aux journaux d'événements que vous souhaitez analyser.
Job de qualification
Le job de qualification simplifie l'analyse à grande échelle en recherchant par programmation les charges de travail par lot Serverless pour Apache Spark et en envoyant un job d'analyse distribué. L'outil évalue les jobs dans votre organisation, ce qui vous évite d'avoir à rechercher et à spécifier manuellement les chemins d'accès aux journaux d'événements.
Accorder des rôles IAM
Pour que le job de qualification puisse accéder aux métadonnées de la charge de travail par lot et lire les journaux d'événements Spark dans Cloud Logging, le compte de service qui exécute la charge de travail doit disposer des rôles IAM suivants dans tous les projets à analyser :
Envoyer le job de qualification
Vous envoyez le job de qualification à l'aide de l'outil gcloud CLI. Le job inclut un script PySpark et un fichier JAR hébergés dans un bucket Cloud Storage public.
Vous pouvez exécuter le job dans l'un des environnements d'exécution suivants :
En tant que charge de travail par lot Serverless pour Apache Spark. Il s'agit d'une exécution de job simple et autonome.
En tant que job qui s'exécute sur un cluster Dataproc sur Compute Engine. Cette approche peut être utile pour intégrer le job dans un workflow.
Arguments de la tâche
| Argument | Description | Obligatoire ? | Valeur par défaut |
|---|---|---|---|
--project-ids |
Un seul ID de projet ou une liste d'ID de projet Google Cloud séparés par une virgule pour rechercher des charges de travail par lot. | Non | Projet dans lequel le job de qualification est en cours d'exécution. |
--regions |
Une seule région ou une liste de régions séparées par une virgule à analyser dans les projets spécifiés. | Non | Toutes les régions des projets spécifiés. |
--start-time |
Date de début du filtrage des lots. Seuls les lots créés à cette date ou après (format : AAAA-MM-JJ) seront analysés. | Non | Aucun filtre de date de début n'est appliqué. |
--end-time |
Date de fin du filtrage des lots. Seuls les lots créés à cette date ou avant (format : AAAA-MM-JJ) seront analysés. | Non | Aucun filtre de date de fin n'est appliqué. |
--limit |
Nombre maximal de lots à analyser par région. Les lots les plus récents sont analysés en premier. | Non | Tous les lots correspondant aux autres critères de filtrage sont analysés. |
--output-gcs-path |
Chemin d'accès Cloud Storage (par exemple, gs://your-bucket/output/) où les fichiers de résultats seront écrits. |
Oui | Aucune. |
--input-file |
Chemin d'accès Cloud Storage à un fichier texte pour l'analyse groupée. Si cet argument est fourni, il remplace tous les autres arguments de définition de champ d'application (--project-ids, --regions, --start-time, --end-time, --limit). |
Non | Aucune. |
Exemples de jobs de qualification
Job par lot Serverless pour Apache Spark permettant d'effectuer une analyse ad hoc simple. Les arguments du job sont listés après le séparateur
--.gcloud dataproc batches submit pyspark gs://qualification-tool/performance-boost-qualification.py \ --project=PROJECT_ID \ --region=REGION \ --jars=gs://qualification-tool/dataproc-perfboost-qualification-1.2.jar \ -- \ --project-ids=COMMA_SEPARATED_PROJECT_IDS \ --regions=COMMA_SEPARATED_REGIONS \ --limit=MAX_BATCHES \ --output-gcs-path=gs://BUCKET
Job par lot Serverless pour Apache Spark permettant d'analyser jusqu'à 50 des lots les plus récents trouvés dans
sample_projectdans la régionus-central1. Les résultats sont écrits dans un bucket dans Cloud Storage. Les arguments du job sont listés après le séparateur--.gcloud dataproc batches submit pyspark gs://qualification-tool/performance-boost-qualification.py \ --project=PROJECT_ID \ --region=US-CENTRAL1 \ --jars=gs://qualification-tool/dataproc-perfboost-qualification-1.2.jar \ -- \ --project-ids=PROJECT_ID \ --regions=US-CENTRAL1 \ --limit=50 \ --output-gcs-path=gs://BUCKET/
Job Dataproc sur Compute Engine envoyé à un cluster Dataproc pour une analyse groupée dans un workflow d'analyse à grande échelle, répétable ou automatisé. Les arguments du job sont placés dans un INPUT_FILE importé dans un BUCKET dans Cloud Storage. Cette méthode est idéale pour analyser différentes plages de dates ou limites de lots dans différents projets et régions en une seule exécution.
gcloud dataproc jobs submit pyspark gs://qualification-tool/performance-boost-qualification.py \ --cluster=CLUSTER_NAME \ --region=REGION \ --jars=gs://qualification-tool/dataproc-perfboost-qualification-1.2.jar \ -- \ --input-file=gs://INPUT_FILE \ --output-gcs-path=gs://BUCKET
Remarques :
INPUT_FILE : chaque ligne du fichier représente une requête d'analyse distincte et utilise un format de flags à une seule lettre suivis de leurs valeurs, par exemple
-p PROJECT-ID -r REGION -s START_DATE -e END_DATE -l LIMITS.Exemple de contenu de fichier d'entrée :
-p project1 -r us-central1 -s 2024-12-01 -e 2024-12-15 -l 100 -p project2 -r europe-west1 -s 2024-11-15 -l 50
Ces arguments indiquent à l'outil d'analyser les deux champs d'application suivants :
- Jusqu'à 100 lots dans le projet1 de la
us-central1région créés entre le 1er décembre 2025 et le 15 décembre 2025. - Jusqu'à 50 lots dans le projet2 de la région
europe-west1créés le 15 novembre 2025 ou après.
- Jusqu'à 100 lots dans le projet1 de la
Script de qualification
Utilisez cette méthode si vous disposez du chemin d'accès Cloud Storage direct à un journal d'événements Spark spécifique
que vous souhaitez analyser. Cette approche nécessite de télécharger
et d'exécuter un script shell, run_qualification_tool.sh, sur une machine locale ou une
VM Compute Engine configurée avec un accès au fichier journal d'événements
dans Cloud Storage.
Procédez comme suit pour exécuter le script sur les fichiers d’événements de charge de travail par lot Serverless pour Apache Spark.
1.Copiez les
run_qualification_tool.sh
dans un répertoire local contenant les fichiers d'événements Spark à analyser.
Exécutez le script de qualification pour analyser un fichier d’événements ou un ensemble de fichiers d’événements contenus dans le répertoire du script.
./run_qualification_tool.sh -f EVENT_FILE_PATH/EVENT_FILE_NAME \ -o CUSTOM_OUTPUT_DIRECTORY_PATH \ -k SERVICE_ACCOUNT_KEY \ -x MEMORY_ALLOCATEDg \ -t PARALLEL_THREADS_TO_RUN
Flags et valeurs :
-f(obligatoire) : consultez Emplacements des fichiers d'événements Spark pour localiser les fichiers d'événements de charge de travail Spark.EVENT_FILE_PATH (obligatoire, sauf si EVENT_FILE_NAME est spécifié) : chemin d'accès au fichier d'événements à analyser. Si aucune valeur n'est fournie, le chemin d'accès au fichier d'événements est supposé être le répertoire actuel.
EVENT_FILE_NAME (obligatoire, sauf si EVENT_FILE_PATH est spécifié) : nom du fichier d'événements à analyser. Si aucune valeur n'est fournie, les fichiers d'événements trouvés de manière récursive dans le
EVENT_FILE_PATHsont analysés.
-o(facultatif) : si aucune valeur n'est fournie, l'outil crée ou utilise un répertoireoutputexistant dans le répertoire actuel pour placer les fichiers de sortie.- CUSTOM_OUTPUT_DIRECTORY_PATH : chemin d'accès au répertoire de sortie des fichiers de sortie.
-k(facultatif) :-x(facultatif) :- MEMORY_ALLOCATED : mémoire en gigaoctets à allouer à l'outil. Par défaut, l'outil utilise 80 % de la mémoire libre disponible dans le système et tous les cœurs de la machine disponibles.
-t(facultatif) :- PARALLEL_THREADS_TO_RUN : nombre de threads parallèles à exécuter par l' outil. Par défaut, l'outil exécute tous les cœurs.
Exemple d'utilisation de la commande :
./run_qualification_tool.sh -f gs://dataproc-temp-us-east1-9779/spark-job-history \ -o perfboost-output -k /keys/event-file-key -x 34g -t 5
Dans cet exemple, l'outil de qualification parcourt le répertoire
gs://dataproc-temp-us-east1-9779/spark-job-historyet analyse les fichiers d'événements Spark contenus dans ce répertoire et ses sous-répertoires. L'accès au répertoire est fourni par/keys/event-file-key. L'outil utilise34 GB memorypour l'exécution et exécute5threads parallèles.
Emplacements des fichiers d'événements Spark
Effectuez l'une des étapes suivantes pour trouver les fichiers d'événements Spark pour les charges de travail par lot Serverless pour Apache Spark :
Dans Cloud Storage, recherchez le
spark.eventLog.dirde la charge de travail, puis téléchargez-le.- Si vous ne trouvez pas le
spark.eventLog.dir, définissez lespark.eventLog.dirsur un emplacement Cloud Storage, puis réexécutez la charge de travail et téléchargez lespark.eventLog.dir.
- Si vous ne trouvez pas le
Si vous avez configuré le serveur d'historique Spark pour le job par lot :
- Accédez au serveur d'historique Spark, puis sélectionnez la charge de travail.
- Cliquez sur Télécharger dans la colonne Journal d'événements.
Fichiers de sortie de l'outil de qualification
Une fois l'analyse du job ou du script de qualification terminée, l'outil de qualification
place les fichiers de sortie suivants dans un
perfboost-output répertoire du répertoire actuel :
AppsRecommendedForBoost.tsv: liste des applications recommandées pour une utilisation avec l'exécution de requêtes natives, séparées par des tabulations.UnsupportedOperators.tsv: liste des applications non recommandées pour une utilisation avec l'exécution de requêtes natives, séparées par des tabulations.
Fichier de sortie AppsRecommendedForBoost.tsv
Le tableau suivant présente le contenu d'un exemple de fichier de sortie AppsRecommendedForBoost.tsv. Il contient une ligne pour chaque application analysée.
Exemple de fichier de sortie AppsRecommendedForBoost.tsv :
| applicationId | applicationName | rddPercentage | unsupportedSqlPercentage | totalTaskTime | supportedTaskTime | supportedSqlPercentage | recommendedForBoost | expectedRuntimeReduction |
|---|---|---|---|---|---|---|---|---|
| app-2024081/batches/083f6196248043938-000 | projects/example.com:dev/locations/us-central1 6b4d6cae140f883c0 11c8e |
0 % | 0 % | 548924253 | 548924253 | 100 % | TRUE | 30 % |
| app-2024081/batches/60381cab738021457-000 | projects/example.com:dev/locations/us-central1 474113a1462b426bf b3aeb |
0 % | 0 % | 514401703 | 514401703 | 100 % | TRUE | 30 % |
Descriptions des colonnes :
applicationId:ApplicationIDde l'application Spark. Utilisez-le pour identifier la charge de travail par lot correspondante.applicationName: nom de l'application Spark.rddPercentage: pourcentage d'opérations RDD dans l'application. Les opérations RDD ne sont pas compatibles avec l'exécution de requêtes natives.unsupportedSqlPercentage:pourcentage d'opérations SQL non compatibles avec l'exécution de requêtes natives.totalTaskTime: temps de tâche cumulé de toutes les tâches exécutées lors de l'exécution de l' application.supportedTaskTime: temps de tâche total compatible avec l'exécution de requêtes natives.
Les colonnes suivantes fournissent des informations importantes pour vous aider à déterminer si l'exécution de requêtes natives peut être bénéfique pour votre charge de travail par lot :
supportedSqlPercentage: pourcentage d'opérations SQL compatibles avec l'exécution de requêtes natives. Plus le pourcentage est élevé, plus la réduction du temps d'exécution que peut être obtenue en exécutant l'application avec l'exécution de requêtes natives est importante.recommendedForBoost: si la valeur estTRUE, il est recommandé d'exécuter l'application avec l'exécution de requêtes natives. SirecommendedForBoostestFALSE, n'utilisez pas l'exécution de requêtes natives sur la charge de travail par lot.expectedRuntimeReduction: pourcentage de réduction attendu du temps d'exécution de l'application lorsque vous l'exécutez avec l'exécution de requêtes natives.
Fichier de sortie UnsupportedOperators.tsv
Le fichier de sortie UnsupportedOperators.tsv contient une liste des opérateurs utilisés dans
les applications de charge de travail qui ne sont pas compatibles avec l'exécution de requêtes natives.
Chaque ligne du fichier de sortie répertorie un opérateur non compatible.
Descriptions des colonnes :
unsupportedOperator: nom de l'opérateur non compatible avec l'exécution de requêtes natives.cumulativeCpuMs: nombre de millisecondes de processeur consommées lors de l' exécution de l'opérateur. Cette valeur reflète l'importance relative de l' opérateur dans l'application.count: nombre de fois où l'opérateur est utilisé dans l'application.