Utiliser le serveur d’historique Apache Spark étendu pour déboguer et diagnostiquer des applications Apache Spark

Cet article vous guide dans l’utilisation du serveur d’historique Apache Spark étendu pour déboguer et diagnostiquer des applications Spark terminées et en cours d’exécution.

Accéder au serveur d’historique Apache Spark

Le serveur d'historique Apache Spark est l'interface utilisateur Web pour les applications Spark terminées et en cours d'exécution. Vous pouvez ouvrir l'interface utilisateur Web d'Apache Spark à partir du bloc-notes d'indicateur de progression ou de la page de détails de l'application Apache Spark.

Ouvrez l'interface utilisateur Web Spark à partir du bloc-notes d'indicateur de progression

Lorsqu'une tâche Apache Spark est déclenchée, le bouton permettant d'ouvrir l'interface utilisateur Web Spark se trouve dans l'option Plus d'action de l'indicateur de progression. Sélectionnez Spark web UI et attendez quelques secondes, puis la page Spark UI apparaît.

Screenshot showing open the Spark web UI from progress indicator notebook.

Ouvrez l'interface utilisateur Web Spark à partir de la page de détail de l'application Apache Spark

L'interface utilisateur Web Spark peut également être ouverte via la page de détails de l'application Apache Spark. Sélectionnez Hub de surveillance sur le côté gauche de la page, puis sélectionnez une application Apache Spark. La page de détail de l'application s'affiche.

Screenshot showing open the Spark web UI from Apache Spark application detail page.

Pour une application Apache Spark dont l'état est en cours d'exécution, le bouton affiche Spark UI. Sélectionnez Spark UI et la page Spark UI apparaît.

Screenshot showing the button displays the spark ui in the running state.

Pour une application Apache Spark dont le statut est terminé, le statut terminé peut être Arrêté, Échec, Annulé ou Terminé. Le bouton affiche le serveur d'historique Spark. Sélectionnez le serveur d'historique Spark et la page de l'interface utilisateur Spark s'affiche.

Screenshot showing the button displays the spark ui in the ended state.

Onglet Graph dans le serveur d’historique Apache Spark

Sélectionnez l’ID du travail à afficher. Ensuite, sélectionnez Graph dans le menu des outils pour obtenir l’affichage du graphique du travail.

Vue d’ensemble

Vous pouvez voir une vue d’ensemble de votre travail dans le graphique du travail ainsi généré. Par défaut, le graphique affiche tous les travaux. Vous pouvez filtrer cet affichage par ID de travail.

Screenshot showing spark application and job graph job ID.

Afficher

Par défaut, l’affichage Progress (Progression) est sélectionné. Vous pouvez vérifier le flux de données en sélectionnant Read (Lues) ou Written (Écrites) dans le menu déroulant Display (Affichage).

Screenshot showing spark application and job graph display.

Le nœud Graph affiche les couleurs indiquées dans la légende de la carte thermique.

Screenshot showing spark application and job graph heatmap.

Lecture

Pour lire la tâche, sélectionnez Playback (Lecture). Vous pouvez sélectionner Stop (Arrêter) à tout moment. Les couleurs des travaux affichent différents états lors de la relecture :

Couleur Signification
Vert Succeeded : le travail s’est correctement effectué.
Orange Nouvelle tentative : instances de tâches qui ont échoué mais qui n'affectent pas le résultat final de la tâche. Ces tâches comportaient des instances dupliquées ou renouvelées qui peuvent réussir ultérieurement.
Bleu Running : la tâche est en cours d’exécution.
White En attente ou ignoré : la tâche est en attente d’exécution, ou la phase a été ignorée.
Rouge Échoué : la tâche a échoué.

L'image suivante montre les couleurs d'état vert, orange et bleu.

Screenshot showing spark application and job graph color sample, running.

L'image suivante montre les couleurs d'état vert et blanc.

Screenshot showing spark application and job graph color sample, skip.

L'image suivante montre les couleurs d'état rouge et verte.

Screenshot showing spark application and job graph color sample, failed.

Remarque

Le serveur d'historique Apache Spark permet la lecture de chaque travail terminé (mais n'autorise pas la lecture des travaux incomplets).

Zoom

Utilisez la molette de la souris pour effectuer un zoom avant/arrière du graphe de travail, ou sélectionnez Zoom to fit (Zoom d’ajustement) pour l’adapter à la taille de l’écran.

Screenshot showing spark application and job graph zoom to fit.

Info-bulles

Pointez sur un nœud de graphique pour afficher l’info-bulle en cas d’échec de tâches, puis sélectionnez une phase pour ouvrir la page correspondante.

Screenshot showing spark application and job graph tooltip.

Sous l’onglet du graphique du travail, une info-bulle et une petite icône s’affichent en regard des phases qui comprennent des tâches qui remplissent les conditions suivantes :

Condition Description
Asymétrie des données Taille de lecture des données taille > moyenne de lecture des données de toutes les tâches à l'intérieur de cette étape * 2 et taille de lecture des données > 10 Mo.
Asymétrie temporelle Temps d'exécution > temps d'exécution moyen de toutes les tâches à l'intérieur de cette étape * 2 et temps d'exécution > 2 minutes.

Screenshot showing spark application and job graph skew icon.

Description du nœud de graphique

Le nœud de graphique du travail affiche les informations suivantes de chaque phase :

  • Récompenses client
  • Nom ou description
  • Nombre total de tâches
  • Lecture de données : somme de la taille d’entrée et de la taille de lecture aléatoire
  • Écriture de données : la somme de la taille de sortie et de la taille des écritures aléatoires
  • Durée d’exécution : durée entre l’heure de début de la première tentative et l’heure de fin de la dernière tentative
  • Nombre de lignes : la somme des enregistrements d'entrée, des enregistrements de sortie, des enregistrements de lecture aléatoire et des enregistrements d'écriture aléatoire
  • Progress

Remarque

Par défaut, le nœud de graphique de travail affiche les informations de la dernière tentative de chaque phase (à l’exception de la durée d’exécution de la phase). Toutefois, en cours de lecture, le nœud de graphique affiche les informations de chaque tentative.

La taille des données de lecture et d'écriture est de 1 Mo = 1000 Ko = 1000 * 1000 octets.

Fournir des commentaires

Pour signaler des problèmes, envoyez des commentaires en sélectionnant Envoyez-nous vos commentaires.

Screenshot showing spark application and job graph feedback.

Explorer l’onglet Diagnostic dans le serveur d’historique Apache Spark

Pour accéder à l’onglet Diagnostic, sélectionnez un ID de travail. Sélectionnez ensuite Diagnostic dans le menu des outils pour ouvrir la vue Diagnostic du travail. L’onglet du diagnostic comprend Data Skew (Asymétrie des données), Time Skew (Asymétrie temporelle) et Executor Usage Analysis (Analyse de l’utilisation de l’exécuteur).

Vérifiez l’asymétrie des données, l’asymétrie temporelle et l’analyse de l’utilisation des exécuteurs en sélectionnant l’onglet correspondant.

Screenshot showing sparkUI diagnosis data skew tab again.

Asymétrie des données

Lorsque vous sélectionnez l’onglet Data Skew (Asymétrie des données), les tâches asymétriques correspondante sont affichées en fonction des paramètres spécifiés.

  • Spécifier les paramètres : la première section affiche les paramètres qui sont utilisés pour détecter l’asymétrie des données. La règle par défaut est : les données de tâche lues sont supérieures à trois fois la moyenne des données de tâche lues et les données de tâche lues sont supérieures à 10 Mo. Si vous souhaitez définir votre propre règle pour les tâches asymétriques, vous pouvez choisir vos paramètres. Les sections Skewed Stage(Phase asymétrique) et Skew Chart (Graphe d’asymétrie) sont actualisées en conséquence.

  • Étape asymétrique – La deuxième section affiche les étapes, qui ont des tâches asymétriques répondant aux critères précédemment spécifiés. S'il existe plusieurs tâches asymétriques dans une étape, le tableau des étapes asymétriques affiche uniquement la tâche la plus asymétrique (par exemple, les données les plus importantes pour l'asymétrie des données).

    Screenshot showing spark ui diagnosis data skew tab.

  • Graphique asymétrique – Lorsqu'une ligne de la table des étapes asymétriques est sélectionnée, le graphique asymétrique affiche davantage de détails sur la distribution des tâches en fonction de la lecture des données et du temps d'exécution. Les tâches asymétriques sont marquées en rouge et les tâches normales sont marquées en bleu. Le graphique affiche jusqu’à 100 exemples de tâches et les détails des tâches s’affichent dans le volet inférieur droit.

    Screenshot showing spark ui skew chart for stage 10.

Asymétrie temporelle

L’onglet Time Skew affiche les tâches asymétriques en fonction de la durée d’exécution des tâches.

  • Spécifier les paramètres – La première section affiche les paramètres utilisés pour détecter le décalage temporel. Par défaut, les critères de détection de l’asymétrie temporelle sont les suivants : la durée d’exécution de la tâche est plus de trois fois supérieure à la durée d’exécution moyenne et supérieure à 30 secondes. Vous pouvez changer les paramètres en fonction de vos besoins. L'étape asymétrique et le graphique asymétrique affichent les informations sur les étapes et les tâches correspondantes, tout comme l'onglet Data Skew décrit précédemment.

  • Sélectionnez Asymétrie temporelle pour afficher les résultats filtrés dans la section Phase asymétrique, en fonction des paramètres définis dans la section Spécifier les paramètres. Sélectionnez un élément dans la section Skewed Stage, puis le graphique correspondant est rédigé dans la section 3 et les détails de la tâche sont affichés dans le panneau inférieur droit.

    Screenshot showing spark ui diagnosis time skew section.

Analyse de l’utilisation des exécuteurs

Cette caractéristique est désormais déconseillée dans Fabric. Si vous souhaitez toujours utiliser cette solution de contournement, accédez à la page en ajoutant explicitement "/executorusage" derrière le chemin d'accès "/diagnostic" dans l'URL, comme ceci :

Screenshot showing modify the url.