Nachzügler sind Arbeitsaufgaben, die Ihre Jobs verlangsamen, da sie die parallele Ausführung von Arbeitsschritten verhindern.
Ein Nachzügler ist eine Arbeitsaufgabe mit den folgenden Eigenschaften:
- Der Abschluss dauert deutlich länger als andere Arbeitsaufgaben in der gleichen Phase.
- Er reduziert die Parallelität innerhalb der Phase.
- Der Start neuer Aufgaben wird verhindert.
Im schlimmsten Fall blockiert ein Nachzügler eine Phase am Abschluss, da ein kleiner Prozentsatz der Aufgabe ausgeführt wird. Dies führt zu Gesamtverzögerungen bei dem Job.
Dataflow erkennt Nachzügler, die während Batchjobs auftreten. Wenn Dataflow einen Nachzügler erkennt, versucht es auch, die Ursache des Nachzüglers zu ermitteln.
Nachzügler auf der Dataflow-Monitoring-Oberfläche ansehen
Nachdem Sie einen Dataflow-Job gestartet haben, können Sie mit der Google Cloud Console alle erkannten Nachzügler aufrufen.
Sie können Nachzügler entweder nach Phase oder nach Workern anzeigen. Verwenden Sie diese Ansichten, um zu ermitteln, welche Phasen Nachzügler haben, und ermitteln Sie dann die Worker, in denen Nachzügler in jeder Phase aufgetreten sind.
Nachzügler nach Phase ansehen
So rufen Sie Nachzügler nach Phase auf:
Rufen Sie in der Google Cloud Console die Dataflow-Seite Jobs auf.
Zu Jobs
Klicken Sie auf den Namen des Jobs.
Klicken Sie auf der Seite mit den Jobdetails auf den Tab Ausführungsdetails.
Wählen Sie in der Liste Grafikansicht die Option Phasenfortschritt aus. Die Fortschrittsgrafik zeigt die aggregierte Anzahl aller Nachzügler in jeder Phase.
Wenn Sie sich Details zu einer Phase ansehen möchten, bewegen Sie den Mauszeiger über den Balken für eine Phase. Wenn Sie die Worker der Phase aufrufen möchten, klicken Sie im Detailbereich auf Worker ansehen.
Nachzügler nach Worker ansehen
So zeigen Sie Nachfolger nach Workern an:
Rufen Sie in der Google Cloud Console die Dataflow-Seite Jobs auf.
Zu Jobs
Klicken Sie auf den Namen des Jobs.
Klicken Sie auf der Seite mit den Jobdetails auf den Tab Ausführungsdetails.
Wählen Sie in der Liste Grafikansicht die Option Worker-Fortschritt aus.
Wählen Sie in der Liste Worker nach Phase filtern die Phase aus. Im Fortschrittsdiagramm werden alle für diese Phase erkannten Nachzügler angezeigt. Die Säule hat eine dunklere Schattierung an dem Punkt, an dem der Nachzügler erstmals erkannt wurde.
Wenn Sie Details zu einem Worker aufrufen möchten, bewegen Sie den Mauszeiger auf den Balken dieses Workers.
Im Bereich Phaseninformationen werden im Abschnitt Nachzüglerdetails die Nachzügler für alle auf der Seite angezeigten Worker aufgelistet. Dabei werden folgende Informationen angezeigt:
- Die Startzeit, zu der der Nachzügler gefunden wurde.
- Der Worker, der den Nachzügler beobachtet hat.
- Die Ursache, falls bekannt.
Probleme mit Nachzüglern beheben
Dataflow erkennt die folgenden Ursachen für Nachzügler:
„Heißer” Schlüssel. Ein „heißer” Schlüssel ist ein Schlüssel, der deutlich mehr Elemente als andere Schlüssel im selben
PCollection
darstellt. Weitere Informationen finden Sie in diesem Dokument unter Fehlerbehebung bei Problemen, die durch „heiße” Schlüssel verursacht werden.Unbestimmte Ursache. Nachzügler mit unbekannter Ursache finden Sie in den allgemeinen Schritten zur Fehlerbehebung für langsame Batchjobs im Dokument Fehlerbehebung und Debugging der Pipeline.
Fehlerbehebung bei Nachzüglern, die durch „heiße” Schlüssel verursacht werden
Verschiedene Faktoren können Nachzügler verursachen. Eine häufige Ursache ist das Vorhandensein einer Tastenkombination. Ein „heißer” Schlüssel ist ein Schlüssel, der deutlich mehr Elemente als andere Schlüssel im selben PCollection
darstellt. „Heiße” Schlüssel können Nachzügler erstellen, da sie die Möglichkeit von Dataflow einschränken, Elemente parallel zu verarbeiten.
Wenn Dataflow einen Nachzügler durch einen „heißen” Schlüssel erkennt, wird im Bereich Nachzüglerdetails Hot Key
als Ursache aufgeführt.
Standardmäßig zeigt Dataflow den Schlüsselwert des „heißen” Schlüssels nicht an. Legen Sie die Pipelineoption hotKeyLoggingEnabled
auf true
fest, wenn Sie den Job ausführen, um den Schlüsselwert aufzurufen.
Prüfen Sie zur Behebung dieses Problems, ob Ihre Daten gleichmäßig verteilt sind. Wenn ein Schlüssel unverhältnismäßig viele Werte enthält, sollten Sie die folgenden Vorgehensweisen berücksichtigen:
- Daten nochmal zur Verfügung stellen. Wenden Sie eine
ParDo
-Transformation an, um neue Schlüsselwertpaare auszugeben. - Verwenden Sie für Java-Jobs die
Combine.PerKey.withHotKeyFanout
-Transformation. - Verwenden Sie für Python-Jobs die Transformation
CombinePerKey.with_hot_key_fanout
. - Dataflow Shuffle aktivieren
Nächste Schritte
- Dataflow-Monitoring-Oberfläche verwenden
- Informationen zum Tab Ausführungsdetails in der Monitoring-Oberfläche