Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Dieser Artikel enthält Anleitungen zur Verwendung des erweiterten Apache Spark-Verlaufsservers zum Debuggen und Diagnostizieren abgeschlossener und aktiver Apache Spark-Anwendungen.
Zugreifen auf den Apache Spark-Verlaufsserver
Der Apache Spark-Verlaufsserver ist die Webbenutzeroberfläche für abgeschlossene und ausgeführte Spark-Anwendungen. Sie können die Apache Spark-Webbenutzeroberfläche (UI) über das Notebook zur Statusanzeige oder die Detailseite der Apache Spark-Anwendung öffnen.
Öffnen Sie die Spark-Webbenutzeroberfläche aus dem Notebook zur Fortschrittsanzeige
Wenn ein Apache Spark-Auftrag ausgelöst wird, befindet sich die Schaltfläche zum Öffnen der Spark-Webbenutzeroberfläche in der Statusanzeige unter Weitere Aktionen. Wählen Sie Spark-Webbenutzeroberfläche aus, und warten Sie einige Sekunden. Dann wird die Seite „Spark-Benutzeroberfläche“ angezeigt.
Öffnen der Spark-Webbenutzeroberfläche über die Anwendungsdetailseite von Apache Spark
Die Spark-Webbenutzeroberfläche kann auch über die Anwendungsdetailseite von Apache Spark geöffnet werden. Wählen Sie " Monitor" auf der linken Seite der Seite aus, und wählen Sie dann eine Apache Spark-Anwendung aus. Die Detailseite der Anwendung wird angezeigt.
Für eine Apache Spark-Anwendung, die derzeit ausgeführt wird, zeigt die Schaltfläche Spark-Benutzeroberfläche an. Wählen Sie Spark-Benutzeroberfläche aus, damit die Seite „Spark-Benutzeroberfläche“ geöffnet wird.
Für eine Apache Spark-Anwendung, deren Ausführung beendet ist, kann der Status Beendet, Fehler, Abgebrochen oder Abgeschlossen lauten. Die Schaltfläche zeigt Spark-Verlaufsserver an. Wählen Sie Spark-Verlaufsserver aus, damit die Seite „Spark-Benutzeroberfläche“ geöffnet wird.
Snapshotbasiertes Laden für umfangreiche Ereignisprotokolle
Für den Spark History Server wurde eine neue snapshotbasierte Lademethode eingeführt, die für große Ereignisprotokollszenarien optimiert ist.
Mit dieser Erweiterung zeigt die Spark-Benutzeroberfläche nach und nach verfügbare Daten an, anstatt darauf zu warten, dass die vollständige Wiedergabe abgeschlossen ist. Wenn die Größe des Ereignisprotokolls 6 GB oder größer ist, wird eine Lademeldung angezeigt, um anzugeben, dass zusätzliche Ladezeit (in der Regel einige Minuten) erforderlich sein kann.
Sobald ein partieller Snapshot verfügbar ist, wird die Benutzeroberfläche anhand dieser Daten gerendert. Eine Meldungsleiste oben zeigt an, dass die Daten weiterhin im Hintergrund verarbeitet werden. Sobald die vollständige Wiedergabe abgeschlossen ist, wird die Meldungsleiste automatisch entfernt, und die Vollansicht wird angezeigt.
Mit dieser Erfahrung haben Sie folgende Möglichkeiten:
- Sehen Sie sich eine klare Lademeldung für große Ereignisprotokolle (≥ 6 GB) an, sodass Sie wissen, dass das System aktiv verarbeitet wird und nicht reagiert.
- Durchsuchen sie eine partielle Momentaufnahme frühzeitig durch ein klar beschriftetes Vorschaubanner, sodass Sie Aufträge und Phasen untersuchen können, ohne auf die vollständige Wiedergabe zu warten.
- Aktualisieren Sie die Seite später, um das vollständige Dataset zu laden, nachdem die Verarbeitung abgeschlossen ist.
Wenn die Spark History-Daten vollständig geladen werden, verschwindet die teilweise geladene Meldungsleiste, und die vollständige Benutzeroberfläche ist verfügbar.
Apache Spark History Server erkunden
Der Apache Spark History Server stellt eine webbasierte Benutzeroberfläche bereit, die Spark-Anwendungsausführungsdetails aus Ereignisprotokollen rekonstruiert. Es ermöglicht Benutzern, abgeschlossene oder ausgeführte Anwendungen über ihren Laufzeitlebenszyklus hinaus zu analysieren.
Die Benutzeroberfläche des History Servers besteht aus mehreren Registerkarten, von denen jede eine andere Sicht auf das Verhalten der Anwendung, die Leistung und die Ressourcenauslastung bietet.
Registerkarte "Aufträge"
Auf der Registerkarte "Aufträge " finden Sie eine allgemeine Übersicht über alle Aufträge innerhalb einer Spark-Anwendung.
Sie können diese Ansicht verwenden, um:
- Auftragsstatus überwachen (wird ausgeführt, erfolgreich oder fehlgeschlagen)
- Aufgabendauern vergleichen
- Schnelle Identifizierung fehlgeschlagener oder langsam ausgeführter Aufträge
Registerkarte "Phasen"
Auf der Registerkarte "Phasen " werden detaillierte Ausführungsinformationen für jede Phase angezeigt.
Sie können diese Ansicht verwenden, um:
- Analysieren der Leistung auf Stufenebene
- Aufgabenverteilung und Shuffle-Metriken überprüfen
- Identifizieren von Engpässen wie schiefen Daten oder kostspieligen Vorgängen
Begrenzung der Anzahl der Phasen
Bei Leistungsüberlegungen ist das Diagramm standardmäßig nur verfügbar, wenn die Spark-Anwendung weniger als 500 Phasen aufweist. Wenn es zu viele Phasen gibt, schlägt der Vorgang mit einem Fehler wie diesem fehl:
The number of stages in this application exceeds limit (500), graph page is disabled in this case.
Wenden Sie als Problemumgehung vor dem Starten einer Spark-Anwendung diese Spark-Konfiguration an, um den Grenzwert zu erhöhen:
spark.ui.enhancement.maxGraphStages 1000
Beachten Sie jedoch, dass dies zu einer schlechten Leistung der Seite und der API führen kann, weil der Inhalt so groß sein kann, dass er vom Browser nicht abgerufen und gerendert werden kann.
Registerkarte "Speicher"
Auf der Registerkarte " Speicher " werden Informationen zu zwischengespeicherten Daten angezeigt.
Sie können diese Ansicht verwenden, um:
- Grundlegendes zur Speicher- und Datenträgernutzung für zwischengespeicherte Datasets
- Überprüfen, ob die Zwischenspeicherung wirksam ist
Registerkarte "Umgebung"
Auf der Registerkarte "Umgebung " werden Die Details zu Laufzeitkonfiguration und Umgebung aufgeführt.
Sie können diese Ansicht verwenden, um:
- Überprüfen der Spark-Konfigurationseinstellungen
- Überprüfen von Umgebungsvariablen und Abhängigkeiten
- Behandeln von Problemen im Zusammenhang mit der Konfiguration
Registerkarte „Ausführende“
Auf der Registerkarte " Executors " wird die Ressourcenauslastung für alle Ausführenden angezeigt.
Sie können diese Ansicht verwenden, um:
- Überwachen der CPU- und Arbeitsspeicherauslastung
- Analysieren der Aufgabenverteilung für alle Ausführenden
- Identifizieren von Vollstreckungsfehlern oder Ungleichgewichten
Registerkarte "Diagramm"
Auf der Registerkarte "Graph " wird die Ausführung eines Spark-Auftrags als gerichtetes azyklisches Diagramm (DAG) dargestellt, das die Beziehungen zwischen Phasen darstellt.
Sie können diese Ansicht verwenden, um:
- Verstehen, wie ein Auftrag in Phasen und deren Abhängigkeiten unterteilt wird
- Identifizieren kritischer Pfade, die die Gesamtdauer des Auftrags bestimmen
- Erkennen fehlgeschlagener oder wiederholter Phasen
- Ausführung des Auftrags erneut abspielen, um zu beobachten, wie Aufgaben im Laufe der Zeit fortschreiten
Diese Registerkarte ist besonders hilfreich, um den Ausführungsfluss zu verstehen und Leistungsengpässe auf hoher Ebene zu identifizieren.
Registerkarte "Diagnose"
Die Registerkarte " Diagnose " bietet erweiterte Analysefunktionen, einschließlich:
- Erkennung von Datenverzerrungen
- Zeitneigungsanalyse
- Nutzungsanalyse des Executors
Überprüfen Sie die Datenschiefe, Zeitabweichung und Executor-Nutzungsanalyse, indem Sie die entsprechenden Registerkarten auswählen.
Diese Registerkarte hilft bei der Identifizierung von Leistungsengpässen und Ineffizienzen bei der Auftragsausführung.
Datenschiefe
Wenn Sie die Registerkarte Datenschiefe auswählen, werden die entsprechenden Aufgaben mit Abweichungen basierend auf den angegebenen Parametern angezeigt.
Parameter festlegen: Im ersten Abschnitt werden die Parameter angezeigt, die zum Erkennen von Datenschiefe verwendet werden. Standardregel: Die gelesenen Taskdaten sind dreimal so groß wie die durchschnittlichen gelesenen Taskdaten, und die gelesenen Taskdaten sind größer als 10 MB. Wenn Sie Ihre eigene Regel für Aufgaben mit Abweichungen definieren möchten, können Sie die Parameter selbst festlegen. Die Abschnitte Skewed Stage und Skew Char werden entsprechend aktualisiert.
Unausgewogene Phase - Im zweiten Abschnitt werden Phasen angezeigt, die Aufgaben mit unausgewogenen Verteilungen enthalten, die die zuvor angegebenen Kriterien erfüllen. Wenn in einer Phase mehrere Tasks mit Abweichungen vorhanden sind, wird in der Tabelle der schiefen Phasen nur der Task mit der größten Abweichung angezeigt (z. B. mit dem größten Wert der Datenschiefe).
Diagramm zur Datenschiefe: Wenn eine Zeile in der Tabelle zu den Phasen mit Datenschiefe ausgewählt ist, werden im Diagramm zur Datenschiefe basierend auf den gelesenen Daten und der Ausführungszeit weitere Details zur Taskverteilung angezeigt. Die schiefen Aufträge sind rot und die normalen Aufträge sind blau markiert. In dem Diagramm werden bis zu 100 Beispielaufgaben angezeigt, außerdem werden die Aufgabendetails im unteren Bereich auf der rechten Seite angezeigt.
Zeitabweichung
Auf der Registerkarte Time Skew (Zeitabweichung) werden schiefe Aufträge basierend auf ihrer Ausführungszeit angezeigt.
Parameter festlegen: Im ersten Abschnitt werden die Parameter angezeigt, die zum Erkennen der Zeitabweichung verwendet werden. Die Standardkriterien zur Erkennung einer zeitlichen Abweichung sind: Die Ausführungszeit der Aufgabe ist größer als das Dreifache der durchschnittlichen Ausführungszeit, und die Ausführungszeit der Aufgabe ist größer als 30 Sekunden. Sie können die Parameter Ihren Anforderungen entsprechend anpassen. Die Schiefe Phase und das Schiefediagramm zeigen die entsprechenden Informationen zu Phasen und Aufgaben genau wie die zuvor beschriebene Registerkarte Datenschiefe an.
Wenn Sie Zeitabweichung auswählen, wird das gefilterte Ergebnis im Abschnitt Schiefe Phase entsprechend den im Abschnitt Parameter festlegen angegebenen Parametern angezeigt. Wählen Sie im Abschnitt Schiefe Phase ein Element aus. Das entsprechende Diagramm wird dann in Abschnitt 3 angezeigt, und die Aufgabendetails werden im Bedienfeld unten rechts dargestellt.
Nutzungsanalyse des Executors
Diese Funktion wurde in Fabric jetzt eingestellt. Wenn Sie dies dennoch als Problemumgehung verwenden möchten, greifen Sie bitte auf die Seite zu, indem Sie in der URL hinter dem Pfad „/diagnostic“ explizit „/executorusage“ hinzufügen, etwa so:
Registerkarte SQL/DataFrame
Für Workloads, die Spark SQL verwenden, bietet die REGISTERKARTE SQL Einblicke auf Abfrageebene.
Sie können diese Ansicht verwenden, um:
- Analysieren von Abfrageausführungsplänen
- Überprüfen der Abfragedauer und Leistung
Hinweis
Die Verfügbarkeit bestimmter Registerkarten hängt vom Workloadtyp und den aktivierten Spark-Funktionen ab.
Spark Executor Rolling Logs: Einfacherer Zugriff für große und lange Aufträge
Da Spark-Anwendungen in Skalierung und Dauer weiter wachsen, sind effiziente Protokollverwaltung und -analyse immer wichtiger geworden. Um diese sich entwickelnden Anforderungen zu erfüllen, haben wir Verbesserungen für den Spark History Server (für abgeschlossene Anwendungen) und spark UI (für die Ausführung von Anwendungen) eingeführt, wodurch die Rollprotokollierung von Executor-Protokollen für Spark 3.4 und höher ermöglicht wird.
Wenn ein Executorprotokoll mit dieser Erweiterung mehr als 16 MB überschreitet oder der Spark-Auftrag für mehr als eine Stunde ausgeführt wird, teilt das System automatisch Protokolle in Stündliche Segmente auf. Dies erleichtert das Navigieren, Anzeigen und Herunterladen von Protokollen ohne den Umgang mit extrem großen Dateien.
Sie können jetzt:
- Protokolle nach Stunde anzeigen, um bestimmte Ausführungszeiträume schnell zu identifizieren
- Greifen Sie auf die neuesten aktiven Protokolle zu, während der Auftrag noch ausgeführt wird.
- Einzeln stündliche Protokolle herunterladen oder alle Protokolle nach Bedarf herunterladen
Mit diesem Feature können Benutzer Protokolle aus einem bestimmten Zeitpunkt mühelos suchen und analysieren, ohne dabei den Aufwand beim Herunterladen oder Öffnen einer massiven einzelnen Protokolldatei zu vermeiden.
Nachfolgend sehen Sie ein Beispiel für die Ansicht "Executor Rolling Logs":