Surveiller et résoudre les problèmes liés aux charges de travail Dataproc sans serveur

Vous pouvez surveiller et résoudre les problèmes liés à Dataproc sans serveur pour les charges de travail par lot Spark à l'aide des informations et des outils décrits dans les sections suivantes.

Serveur d'historique persistant

Dataproc sans serveur pour Spark crée les ressources de calcul nécessaires à l'exécution d'une charge de travail. exécute la charge de travail sur ces ressources, puis supprime les ressources une fois la charge de travail terminée. Les métriques et les événements de la charge de travail ne persistent pas une fois la charge de travail terminée. Toutefois, vous pouvez utiliser un serveur d'historique persistant (PHS) pour conserver l'historique des applications de la charge de travail (journaux des événements) dans Cloud Storage.

Pour utiliser un PHS avec une charge de travail par lot, procédez comme suit:

  1. Créez un serveur d'historique persistant (PHS) Dataproc.

  2. Spécifiez votre PHS lorsque vous envoyez une charge de travail.

  3. Utiliser la passerelle des composants pour vous connecter au PHS afin d'afficher les détails de l'application, les étapes du planificateur, les détails au niveau des tâches et les informations sur l'environnement et l'exécuteur.

Journaux Dataproc sans serveur pour Spark

Dans Dataproc sans serveur pour Spark, la journalisation est activée par défaut, et les journaux de charge de travail sont conservés après une de la charge de travail. Dataproc sans serveur pour Spark collecte les journaux de charge de travail dans Cloud Logging. Vous pouvez accéder aux journaux Dataproc sans serveur pour Spark sous le Cloud Dataproc Batch dans l'explorateur de journaux.

Interroger les journaux Dataproc sans serveur pour Spark

L'explorateur de journaux de la console Google Cloud fournit un volet de requête pour vous aider à créer une requête afin d'examiner les journaux de charge de travail par lot. Voici les étapes à suivre pour créer une requête permettant d'examiner les journaux de charge de travail par lot :

  1. Accéder à l'explorateur de journaux

  2. Votre projet actuel est sélectionné. Vous pouvez cliquer sur Affiner le projet de champ d'application pour : sélectionnez un autre projet.
  3. Définissez une requête de journaux par lot.

    • Utiliser les menus de filtrage pour filtrer une charge de travail par lot.

      1. Sous Toutes les ressources, sélectionnez la ressource Cloud Dataproc Batch.

        1. Dans le panneau Sélectionner une ressource, sélectionnez l'EMPLACEMENT du lot, puis l'ID DE LOT. Ces paramètres de lot sont répertoriés sur la page Lots Dataproc de la console Google Cloud.

        2. Cliquez sur Appliquer.

        3. Sous Sélectionner des noms de journaux, saisissez dataproc.googleapis.com dans le champ Rechercher des noms de journaux pour limiter les types de journaux à interroger. Sélectionnez un ou plusieurs des noms de fichiers journaux listés.

    • Utilisez l'éditeur de requête pour filtrer les journaux spécifiques aux VM.

      1. Spécifiez le type de ressource et le nom de la ressource VM, comme indiqué dans l'exemple suivant :

        resource.type="cloud_dataproc_batch"
        labels."dataproc.googleapis.com/resource_name"="gdpic-srvls-batch-BATCH_UUID-VM_SUFFIX"
        
        Remarques:

        • BATCH_UUID : l'UUID du lot est indiqué sur la page "Détails du lot" de la console Google Cloud, qui s'ouvre lorsque vous cliquez sur l'ID de lot sur la page Lots.

        Les journaux de lot indiquent également l'UUID du lot dans le nom de la ressource de VM. Voici un exemple de fichier driver.log par lot :

  4. Cliquez sur Exécuter la requête.

Dataproc sans serveur pour les types de journaux Spark et les exemples de requêtes

La liste suivante décrit différents types de journaux Dataproc sans serveur et fournit des exemples de requêtes de l'explorateur de journaux pour chaque type de journal.

  1. dataproc.googleapis.com/output : ce fichier journal contient la sortie de la charge de travail par lot. Dataproc sans serveur pour Spark diffuse la sortie par lot vers l'espace de noms output, et définit le nom de fichier sur JOB_ID.driver.log.

    Exemple de requête de l'explorateur de journaux pour les journaux de sortie:

    resource.type="cloud_dataproc_batch"
    resource.labels.location="REGION"
    resource.labels.batch_id="BATCH_ID"
    logName="projects/PROJECT_ID/logs/dataproc.googleapis.com%2Foutput"
    

  2. dataproc.googleapis.com/spark: l'espace de noms spark agrège Spark. des journaux pour les daemons et les exécuteurs exécutés sur Dataproc le maître de cluster et les VM de nœud de calcul. Chaque entrée de journal inclut un libellé de composant master, worker ou executor pour identifier la source de journal, comme suit :

    • executor: journaux des exécuteurs de code utilisateur Il s'agit généralement de journaux distribués.
    • master: journaux de l'instance maître du gestionnaire de ressources autonome Spark, qui sont semblable à Dataproc sur Compute Engine YARN Journaux ResourceManager.
    • worker: journaux du nœud de calcul du gestionnaire de ressources autonome Spark qui sont semblables à Dataproc sur Compute Engine YARN Journaux NodeManager.

    Exemple de requête de l'explorateur de journaux pour tous les journaux de l'espace de noms spark :

    resource.type="cloud_dataproc_batch"
    resource.labels.location="REGION"
    resource.labels.batch_id="BATCH_ID"
    logName="projects/PROJECT_ID/logs/dataproc.googleapis.com%2Fspark"
    

    Exemple de requête de l'explorateur de journaux pour les journaux de composants autonomes Spark dans l'espace de noms spark :

    resource.type="cloud_dataproc_batch"
    resource.labels.location="REGION"
    resource.labels.batch_id="BATCH_ID"
    logName="projects/PROJECT_ID/logs/dataproc.googleapis.com%2Fspark"
    jsonPayload.component="COMPONENT"
    

  3. dataproc.googleapis.com/startup: l'espace de noms startup inclut les de démarrage par lot (cluster). Tous les journaux de script d'initialisation sont inclus. Les composants sont identifiés par étiquette, par exemple:

    startup-script[855]: ... activate-component-spark[3050]: ... enable spark-worker
    
    Exemple de requête de l'Explorateur de journaux pour les journaux de démarrage des journaux sur une VM spécifiée:
    resource.type="cloud_dataproc_batch"
    resource.labels.location="REGION"
    resource.labels.batch_id="BATCH_ID"
    logName="projects/PROJECT_ID/logs/dataproc.googleapis.com%2Fstartup"
    labels."dataproc.googleapis.com/resource_name"="gdpic-srvls-batch-BATCH_UUID-VM_SUFFIX"
    
  4. dataproc.googleapis.com/agent: l'espace de noms agent agrège Journaux de l'agent Dataproc. Chaque entrée de journal inclut une étiquette de nom de fichier qui identifie la source du journal.

    Exemple de requête de l'explorateur de journaux pour les journaux d'agent générés par une VM de travail spécifiée :

    resource.type="cloud_dataproc_batch"
    resource.labels.location="REGION"
    resource.labels.batch_id="BATCH_ID"
    logName="projects/PROJECT_ID/logs/dataproc.googleapis.com%2Fagent"
    labels."dataproc.googleapis.com/resource_name"="gdpic-srvls-batch-BATCHUUID-wWORKER#"
    

  5. dataproc.googleapis.com/autoscaler: l'espace de noms autoscaler agrège Journaux Dataproc sans serveur pour l'autoscaler Spark.

    Exemple de requête de l'Explorateur de journaux pour les journaux d'agent générés par une VM de nœud de calcul spécifiée:

    resource.type="cloud_dataproc_batch"
    resource.labels.location="REGION"
    resource.labels.batch_id="BATCH_ID"
    logName="projects/PROJECT_ID/logs/dataproc.googleapis.com%2Fautoscaler"
    labels."dataproc.googleapis.com/resource_name"="gdpic-srvls-batch-BATCHUUID-wWORKER#"
    

Pour en savoir plus, consultez la section Journaux Dataproc.

Journaux d'audit sans serveur Dataproc

Pour en savoir plus sur les journaux d'audit Dataproc sans serveur, consultez la page Journaux d'audit Dataproc

Métriques liées aux charges de travail

Par défaut, Dataproc sans serveur pour Spark active la collecte des métriques Spark disponibles, sauf si vous utilisez des propriétés de collecte des métriques Spark pour désactiver ou remplacer la collecte d'une ou de plusieurs métriques Spark.

Vous pouvez afficher les métriques des charges de travail Explorateur de métriques ou la Page Détails du lot de la console Google Cloud.

Métriques de lot

Les métriques de ressources Dataproc batch fournissent des insights sur les ressources par lot. tels que le nombre d'exécuteurs par lot. Les métriques de lot sont précédées du préfixe dataproc.googleapis.com/batch.

Exemple de métrique par lot dans l'explorateur de métriques.

Métriques Spark

Métriques Spark disponibles incluent des métriques de pilote et d'exécuteur Spark, ainsi que des métriques système. Les métriques Spark disponibles sont précédées d'un préfixe avec custom.googleapis.com/.

Exemple de métrique Spark dans l'explorateur de métriques.

Configurer des alertes de métriques

Vous pouvez créer des alertes de métrique Dataproc pour être averti des problèmes de charge de travail.

Créer des graphiques

Vous pouvez créer des graphiques qui visualisent les métriques de charge de travail à l'aide de l'explorateur de métriques dans la console Google Cloud. Par exemple, vous pouvez créer un graphique pour afficher disk:bytes_used, puis filtrer par batch_id.

Cloud Monitoring

La surveillance utilise les métadonnées et les métriques des charges de travail pour fournir des insights sur l'état et les performances des charges de travail Dataproc sans serveur pour Spark. Les métriques de charge de travail incluent les métriques Spark, les métriques de lot et les métriques d'opération.

Vous pouvez utiliser Cloud Monitoring dans la console Google Cloud pour explorer des métriques, ajouter des graphiques, créer des tableaux de bord et des alertes.

Créer des tableaux de bord

Vous pouvez créer un tableau de bord pour surveiller les charges de travail à l'aide de métriques issues de plusieurs des projets et des produits Google Cloud. Pour en savoir plus, consultez la section Créer et gérer des tableaux de bord personnalisés.

Dépannage avancé (aperçu)

Cette section présente les fonctionnalités de dépannage avancées (Preview) disponibles dans la console Google Cloud. Ces fonctionnalités incluent : Dépannage assisté par Gemini pour Dataproc sans serveur qui fait partie Offre Gemini dans BigQuery.

Accès aux fonctionnalités en preview

Pour vous inscrire à la version preview de fonctionnalités de dépannage avancées, remplissez et envoyez le Inscription à Gemini dans BigQuery avant disponibilité générale . Une fois le formulaire approuvé, les projets répertoriés dans le formulaire ont accès à en preview.

Aperçu des tarifs

La participation à la version Preview n'entraîne aucuns frais supplémentaires. Des frais s'appliqueront aux fonctionnalités en preview suivantes lorsqu'elles seront disponibilité générale:

Un préavis des débits GA sera envoyé à l'adresse e-mail que vous indiquez dans le formulaire d'inscription de l'aperçu.

Exigences concernant les fonctionnalités

  • Inscription : vous devez vous inscrire à cette fonctionnalité.

  • Autorisation : vous devez disposer de l'autorisation dataproc.batches.analyze.

    gcloud iam roles update CUSTOM_ROLE_ID --project=PROJECT_ID \
    --add-permissions="dataproc.batches.analyze"
    
  • Activer le dépannage assisté par Gemini pour Dataproc sans serveur : vous activez le dépannage assisté par Gemini pour Dataproc sans serveur lorsque vous envoyez chaque charge de travail par lot Spark récurrente à l'aide de la console Google Cloud, de la gcloud CLI ou de l'API Dataproc. Une fois cette fonctionnalité activée sur une charge de travail par lot récurrente, Dataproc stocke une copie des journaux de charge de travail pendant 30 jours et utilise les données de journaux enregistrées afin de résoudre les problèmes liés à la charge de travail avec Gemini. Pour en savoir plus sur le contenu des journaux de la charge de travail Spark, consultez la page Journaux Dataproc sans serveur pour Spark.

Console

Pour activer le dépannage assisté par Gemini sur chaque charge de travail par lot Spark récurrente, procédez comme suit :

  1. Dans la console Google Cloud, accédez à la page Dataproc Lots.

    Accéder à la page "Lots" de Dataproc

  2. Pour créer une charge de travail par lot, cliquez sur Créer.

  3. Dans la section Conteneur, remplissez le Nom de la cohorte, qui identifie le lot comme l'une des charges de travail récurrentes. L'analyse assistée par Gemini est appliquée à la deuxième charge de travail et aux suivantes envoyées avec ce nom de cohorte. Par exemple, spécifiez TPCH-Query1 comme nom de cohorte pour une charge de travail planifiée qui exécute une requête TPC-H quotidienne.

  4. Renseignez les autres sections de la page Créer un lot si nécessaire, puis cliquez sur Envoyer. Pour en savoir plus, consultez la section Envoyer une charge de travail par lot.

gcloud

Exécutez la commande gcloud dataproc batches submit de la gcloud CLI suivante en local dans une fenêtre de terminal ou dans Cloud Shell pour activer le dépannage assisté par Gemini sur chaque charge de travail par lot Spark récurrente :

gcloud dataproc batches submit COMMAND \
    --region=REGION \
    --cohort=COHORT \
    other arguments ...

Remplacez les éléments suivants :

  • COMMAND: type de charge de travail Spark, tel que Spark, PySpark Spark-Sql ou Spark-R.
  • REGION : région dans laquelle votre charge de travail sera exécutée.
  • COHORT: nom de la cohorte, identifie le lot comme faisant partie d'une série de charges de travail récurrentes. L'analyse assistée par Gemini est appliquée à la deuxième tâche de travail et aux tâches suivantes envoyées avec ce nom de cohorte. Par exemple, spécifiez TPCH Query 1. comme nom de cohorte pour une charge de travail planifiée qui exécute une requête TPC-H.

API

Inclure RuntimeConfig.cohort dans un objet batches.create demande d'activation du dépannage assisté par Gemini sur chaque Spark par lot. L'analyse assistée par Gemini est appliquée à la deuxième charge de travail et aux charges de travail suivantes envoyées avec ce nom de cohorte. Par exemple, spécifiez TPCH-Query1 comme nom de cohorte. pour une charge de travail planifiée qui exécute requête TPC-H.

Exemple :

...
runtimeConfig:
  cohort: TPCH-Query1
...

Résolution des problèmes avec Gemini pour Dataproc sans serveur

Les fonctionnalités de dépannage en avant-première assistées par Gemini suivantes sont disponibles sur les pages de liste Détails du lot et Lots de la console Google Cloud.

  • Onglet Examiner: onglet "Examiner" de la page Informations sur le lot fournit une section "Health Overview (Preview)" (Aperçu de l'état) contenant les éléments suivants : Panneaux de dépannage assisté par Gemini:

    • Quel élément a été réglé automatiquement ? Si vous avez activé l'autotuning sur une ou plusieurs charges de travail, ce panneau affiche les modifications d'autotuning les plus récentes qui ont été appliquées aux charges de travail en cours d'exécution, terminées et ayant échoué.

    Panneau d'investigation du réglage automatique

    • Que se passe-t-il actuellement ? et Que puis-je faire ? Cliquez sur Demander à Gemini pour obtenir des recommandations afin de corriger les charges de travail ayant échoué ou d'améliorer des charges de travail réussies, mais lentes.

    Bouton "Demander à Gemini".

    Si vous cliquez sur Demander à Gemini, Gemini pour Google Cloud génère un résumé des erreurs, les anomalies ou les faits marquants dans les journaux de charge de travail, les métriques Spark et les événements Spark. Gemini pour Google Cloud peut également afficher une liste d'étapes recommandées à suivre pour corriger une charge de travail ayant échoué ou améliorer les performances d'une charge de travail réussie, mais lente.

    Insights générés par Gemini pour Google Cloud.

  • Colonnes de dépannage assisté par Gemini : dans la version preview, la page de liste Lots de Dataproc dans la console Google Cloud inclut les colonnes What was Autotuned, What is happening now? et What can I do about it?.

    Les lots listent les colonnes Gemini.

    Le bouton Demander à Gemini s'affiche. activée uniquement si un lot terminé présente l'état Failed, Cancelled ou Succeeded. Si vous cliquez sur Demander à Gemini, Gemini pour Google Cloud génère un résumé des erreurs, anomalies ou points forts des journaux de charge de travail, des métriques Spark et des événements Spark. Gemini pour Google Cloud peut également afficher une liste d'étapes recommandées à suivre pour corriger une charge de travail ayant échoué ou améliorer les performances d'une charge de travail réussie, mais lente.

Points forts des métriques par lot

Dans le cadre de la version preview, la page Détails du lot de la console Google Cloud inclut des graphiques affichant les valeurs importantes des métriques pour les charges de travail par lot. Les graphiques de métriques sont renseignés avec des valeurs une fois le lot terminé.

Tableau de bord des métriques par lot

Tableau des métriques 

Le tableau suivant liste les métriques de charge de travail Spark affichées sur la page Détails de la tâche par lot de la console Google Cloud, et décrit comment les valeurs de métrique peuvent fournir des insights sur l'état et les performances de la charge de travail.

Métrique Quelles informations sont affichées ?
Métriques au niveau de l'exécuteur
Ratio de la durée de récupération de mémoire JVM par rapport à l'environnement d'exécution Cette métrique indique le ratio entre la durée du GC (garbage collection) JVM et l'environnement d'exécution par exécuteur. Des ratios élevés peuvent indiquer des fuites de mémoire dans les tâches exécutées sur des exécuteurs particuliers ou des structures de données inefficaces, ce qui peut entraîner un taux de rotation élevé des objets.
Octets de disque répandus Cette métrique indique le nombre total d'octets de disque répandus sur différents exécuteurs. Si un exécuteur montre un nombre élevé d'octets de disque répandus, cela peut indiquer un décalage des données. Si la métrique augmente au fil du temps, cela peut indiquer que certaines étapes présentent une pression sur la mémoire ou des fuites de mémoire.
Octets lus et écrits Cette métrique indique le nombre d'octets écrits par rapport au nombre d'octets lus par exécuteur. Des écarts importants au niveau des octets lus ou écrits peuvent indiquer des scénarios dans lesquels les jointures répliquées entraînent une amplification des données sur des exécuteurs spécifiques.
Enregistrements lus et écrits Cette métrique indique les enregistrements lus et écrits par exécuteur. Un grand nombre d'enregistrements lus avec un faible nombre d'enregistrements écrits peut indiquer un goulot d'étranglement dans la logique de traitement sur des exécuteurs spécifiques, ce qui entraîne la lecture d'enregistrements en attente. Les exécuteurs qui sont constamment à la traîne en termes de lecture et d'écriture peuvent indiquer des conflits de ressources sur ces nœuds ou des inefficacités du code spécifiques aux exécuteurs.
Ratio du temps d'écriture du brassage par rapport au temps d'exécution La métrique indique le temps que l'exécuteur a passé dans l'environnement d'exécution de brassage par rapport à l'environnement d'exécution global. Si cette valeur est élevée pour certains exécuteurs, cela peut indiquer un décalage des données ou une sérialisation des données inefficace. Vous pouvez identifier les étapes avec de longs temps d'écriture en brassage dans l'UI Spark. Recherchez les tâches aberrantes au sein de ces étapes qui prennent plus de temps que la moyenne. Vérifiez si les exécuteurs présentant des temps d'écriture de mélange élevés affichent également une activité d'E/S de disque élevée. Une sérialisation plus efficace et des étapes de partitionnement supplémentaires peuvent s'avérer utiles. Un nombre très élevé d'écritures d'enregistrements par rapport aux lectures d'enregistrements peut indiquer une duplication de données involontaire due à des jointures inefficaces ou à des transformations incorrectes.
Métriques au niveau de l'application
Progression des étapes Cette métrique indique le nombre d'étapes en échec, en attente et en cours d'exécution. Un grand nombre d'étapes en échec ou en attente peut indiquer un décalage des données. Recherchez des partitions de données et déboguez la raison de l'échec de l'étape à l'aide de l'onglet Étapes de l'UI Spark.
Exécuteurs Spark par lot Cette métrique indique le nombre d'exécuteurs pouvant être requis par rapport au nombre d'exécuteurs en cours d'exécution. Une grande différence entre les exécuteurs requis et ceux en cours d'exécution peut indiquer des problèmes d'autoscaling.
Métriques au niveau de la VM
Mémoire utilisée Cette métrique indique le pourcentage de mémoire de la VM utilisée. Si le pourcentage de maître est élevé, cela peut indiquer que le pilote est sous pression de mémoire. Pour les autres nœuds de VM, un pourcentage élevé peut indiquer que les exécuteurs sont à court de mémoire, ce qui peut entraîner un gaspillage de disque important et un temps d'exécution de la charge de travail plus lent. Utilisez l'UI Spark pour analyser les exécuteurs afin de vérifier si le temps de GC et les échecs de tâche sont élevés. Débogage du code Spark pour le cache des ensembles de données volumineux et la diffusion inutile de variables.

Journaux de la tâche

Dans la version Preview, la page Détails du lot de la console Google Cloud liste les journaux de la tâche (charge de travail par lot). Les journaux incluent les avertissements et les erreurs filtrés à partir de la sortie de la charge de travail et des journaux Spark. Vous pouvez sélectionner le niveau de gravité des journaux, ajouter un filtre, puis cliquer sur l'icône Afficher dans l'explorateur de journaux pour ouvrir les journaux de lot sélectionnés dans l'explorateur de journaux.

Exemple: l'explorateur de journaux s'ouvre après avoir choisi Errors dans le niveau de gravité. sur la page Détails du lot de la console Google Cloud.

Explorateur de journaux Batch.

UI Spark (Preview)

Si vous avez inscrit votre projet à la fonctionnalité Preview de l'UI Spark, vous pouvez afficher l'UI Spark dans la console Google Cloud sans avoir à créer de cluster PHS (Persistent History Server) Dataproc. L'UI Spark collecte les détails d'exécution Spark à partir des charges de travail par lot. Pour plus d'informations, consultez le guide de l'utilisateur distribué aux clients inscrits. dans la version preview de l'UI Spark.