In der Dataflow-Monitoringoberfläche werden im Bereich Details zum Schritt Informationen zu einzelnen Schritten in einem Job angezeigt. Ein Schritt stellt eine einzelne Transformation in Ihrer Pipeline dar. Zusammengesetzte Transformationen enthalten Unterschritte.
Im Bereich Details zum Schritt werden die folgenden Informationen angezeigt:
- Messwerte für den Schritt.
- Informationen zu den Eingabe- und Ausgabesammlungen des Schritts.
- Welche Phasen diesem Schritt entsprechen.
- Messwerte zu Nebeneingaben
Im Bereich Details zum Schritt können Sie nachvollziehen, wie Ihr Job in jedem Schritt ausgeführt wird, und Schritte finden, die möglicherweise optimiert werden können.
Details zum Schritt ansehen
So rufen Sie Details zum Schritt auf:
Rufen Sie in der Google Cloud Console die Seite Dataflow > Jobs auf.
Wählen Sie einen Job aus.
Klicken Sie auf den Tab Jobgrafik , um die Jobgrafik aufzurufen. In der Jobgrafik wird jeder Schritt in der Pipeline als Feld dargestellt.
Klicken Sie auf einen Schritt. Informationen zum Schritt werden im Bereich Details zum Schritt angezeigt.
Wenn Sie Unterschritte für eine zusammengesetzte Transformation aufrufen möchten, klicken Sie auf den Knoten erweitern Pfeil.
Schrittmesswerte
Im Bereich Details zum Schritt werden die folgenden Messwerte für den Schritt angezeigt.
Systemwasserzeichen und ‑verzögerung
Das Systemwasserzeichen ist der letzte Zeitstempel, für den alle Ereigniszeiten vollständig verarbeitet wurden. Die Verzögerung des Systemwasserzeichens ist die maximale Zeit, die ein Datenelement auf die Verarbeitung gewartet hat.
Datenwasserzeichen und ‑verzögerung
Das Datenwasserzeichen ist der Zeitstempel, der die geschätzte Abschlusszeit der Dateneingabe für diesen Schritt markiert. Die Verzögerung des Datenwasserzeichens ist die Differenz zwischen der letzten Eingabeereigniszeit und dem Datenwasserzeichen.
Echtzeit
Die Echtzeit gibt die ungefähre Zeit wieder, die in allen Threads in allen Workern für die folgenden Aktionen aufgewendet wurde:
- Schritt initialisieren
- Daten verarbeiten
- Daten nach dem Zufallsprinzip verteilen
- Schritt beenden
Bei zusammengesetzten Schritten entspricht die Echtzeit der Summe der für die einzelnen Schritte aufgewendeten Zeit.
Mit der Echtzeit können Sie Schritte ermitteln, die mehr Zeit benötigen, und so feststellen, welcher Teil Ihrer Pipeline mehr Zeit in Anspruch nimmt, als er sollte.
Engpassstatus
Wenn Dataflow einen Engpass erkennt, wird eine Benachrichtigung angezeigt, zusammen mit der Ursache, falls bekannt. Weitere Informationen finden Sie unter Engpässe beheben.
Maximale Vorgangslatenz
Die maximale Vorgangslatenz ist die maximale Zeit, die für diesen Schritt aufgewendet wird, um eingehende Nachrichten oder Fensterablaufzeiten zu verarbeiten. Dieser Wert wird aggregiert über Schritte hinweg gemessen, die zu einer einzelnen Phase zusammengefasst werden. Der Wert bezieht sich damit auf die gesamte Phase.
Schlüsselparallelität
Die Schlüsselparallelität ist die ungefähre Anzahl der Schlüssel, die für die Datenverarbeitung in diesem Schritt verwendet werden.
Windowing-Informationen
Bei Aggregationsschritten in Streamingpipelines werden im Bereich Details zum Schritt Windowing-Informationen angezeigt, die von der Windowing-Strategie der ParDo-Transformation der Pipeline abgeleitet wurden. Beispiel:
- Windowing-Funktion:
org.apache.beam.sdk.transforms.windowing.SlidingWindows - Fensterperiode:
30 sec - Fenstergröße:
5 min - Fensterstart-Offset:
0 ms - Windowing-Akkumulationsmodus:
DISCARDING - Windowing-Schreibverstärkungsfaktor:
10
Die folgenden Windowing-Felder liefern wichtigen Kontext für die Streamingleistung und das Datenvolumen:
- Windowing-Akkumulationsmodus:Gibt an, ob der Fensterstatus über Triggerauslösungen hinweg beibehalten wird. Weitere Informationen finden Sie in der Apache Beam-Dokumentation unter siehe Window accumulation modes (Windowing-Akkumulationsmodi).
- Windowing-Schreibverstärkungsfaktor:Die durchschnittliche Anzahl der Fenster, denen jedes eingehende Element zugewiesen wird, berechnet als
Window Size / Window Period. Bei einer Fenstergröße von 5 Minuten (300 sec) und einer Fensterperiode von 30 Sekunden (30 sec) wird beispielsweise jedes Element 10 überlappenden Fenstern zugewiesen (300 / 30 = 10), was zu einem Schreibverstärkungsfaktor von10führt. Ein Verstärkungsfaktor größer als1multipliziert das nachgelagerte Elementvolumen, den Shuffle-Traffic und den Statusspeicher.
Eingabe-/Ausgabesammlungen
Im Bereich Details zum Schritt werden die folgenden Informationen zu jeder Eingabe- und Ausgabesammlung im Schritt angezeigt:
Durchsatzdiagramm. Dieses Diagramm zeigt den Durchsatz für die Sammlung. Sie können das Diagramm als Elemente pro Sekunde oder als Byte pro Sekunde anzeigen. Weitere Informationen zu diesem Messwert finden Sie unter Durchsatz.
Anzahl der Elemente, die der Sammlung hinzugefügt wurden.
Geschätzte Größe der Sammlung in Byte.
Optimierte Phasen
Eine Phase stellt eine einzelne Arbeitseinheit dar, die von Dataflow ausgeführt wird. Wenn Sie in der Jobgrafik einen Schritt auswählen, werden im Bereich Details zum Schritt die Namen der Phasen angezeigt, in denen dieser Schritt ausgeführt wird, zusammen mit dem aktuellen Status, z. B. „Wird ausgeführt“, „Angehalten“ oder „Erfolgreich“.
Weitere Informationen zu den Phasen in Ihrem Job finden Sie auf dem Tab Ausführungsdetails.
Messwerte zu Nebeneingaben
Eine Nebeneingabe ist eine zusätzliche Eingabe, auf die eine Transformation bei jeder Verarbeitung eines Elements zugreifen kann. Wenn eine Transformation eine Nebeneingabe erstellt oder verwendet, werden im Bereich Details zu Nebeneingaben Messwerte für die Nebeneingabesammlung angezeigt.
Wenn eine zusammengesetzte Transformation eine Nebeneingabe erstellt oder verwendet, erweitern Sie die zusammengesetzte Transformation, bis Sie die spezifische Subtransformation sehen, von der die Nebeneingabe erstellt oder verwendet wird. Wählen Sie diese Subtransformation aus, um die Messwerte zu Nebeneingaben aufzurufen.
Transformationen, die eine Nebeneingabe erstellen
Wenn eine Transformation eine Sammlung von Nebeneingaben erstellt, werden im Bereich Messwerte zu Nebeneingaben der Name der Sammlung und die folgenden Messwerte angezeigt.
- Zeit zum Schreiben:Die Ausführungszeit für das Schreiben der Sammlung von Nebeneingaben.
- Geschriebene Byte: Gesamtzahl der Byte, die in die Sammlung der Nebeneingaben geschrieben wurden.
- Zeit und Byte zum Lesen von Nebeneingaben: Eine Tabelle mit zusätzlichen Messwerten für alle Transformationen, die auf die Sammlung der Nebeneingaben zugreifen. Sie werden als Nutzer von Nebeneingaben bezeichnet.
Unter Zeit und Byte zum Lesen von Nebeneingaben werden für jeden Nutzer der Nebeneingaben folgende Informationen angezeigt:
- Nutzer der Nebeneingabe: Transformationsname des Nutzers der Nebeneingabe
- Zeit zum Lesen:Zeit, die für das Lesen der Nebeneingabesammlung benötigt wurde.
- Gelesene Byte:Anzahl der Byte, die dieser Nutzer aus der Nebeneingabesammlung gelesen hat
Die folgende Abbildung zeigt Messwerte zu Nebeneingaben für eine Transformation, die eine Sammlung von Nebeneingaben erstellt:

Die Jobgrafik enthält eine erweiterte zusammengesetzte Transformation (MakeMapView). Die Subtransformation, die die Nebeneingabe erstellt (CreateDataflowView), ist ausgewählt und die Messwerte zu Nebeneingaben werden im Bereich Details zum Schritt angezeigt.
Transformationen, die Nebeneingaben verwenden
Wenn eine Transformation eine oder mehrere Nebeneingaben verwendet, wird im Bereich Messwerte zu Nebeneingaben die Tabelle Zeit und Byte zum Lesen von Nebeneingaben angezeigt. Diese Tabelle enthält für jede Nebeneingabesammlung folgende Informationen:
- Nebeneingabesammlung:Name der Nebeneingabesammlung
- Zeit zum Lesen:Zum Lesen dieser Nebeneingabesammlung benötigte Zeit
- Gelesene Byte:Anzahl der Byte, die die Transformation aus dieser Nebeneingabesammlung gelesen hat
Die folgende Abbildung zeigt Messwerte zu Nebeneingaben für eine Transformation, die aus einer Sammlung von Nebeneingaben liest.

Die Transformation JoinBothCollections liest aus einer Nebeneingabesammlung.
JoinBothCollections ist in der Jobgrafik markiert und die Messwerte zu Nebeneingaben werden im Bereich Details zum Schritt angezeigt.
Leistungsprobleme bei Nebeneingaben identifizieren
Nebeneingaben können sich auf die Leistung Ihrer Pipeline auswirken. Wenn Ihre Pipeline eine Nebeneingabe verwendet, schreibt Dataflow die Sammlung in eine nichtflüchtige Ebene, z. B. auf eine Festplatte, und wandelt die Leseergebnisse aus dieser nichtflüchtigen Sammlung um. Diese Lese- und Schreibvorgänge beeinflussen die Ausführungszeit Ihres Jobs.
Wiederholung ist ein häufig auftretendes Leistungsproblem bei Nebeneingaben. Wenn die Nebeneingabesammlung PCollection zu groß ist, können die Worker nicht die gesamte Sammlung im Cache speichern.
Das bedeutet, die Worker müssen mehrmals aus der nichtflüchtigen Nebeneingabesammlung lesen.
In der folgenden Abbildung zeigen die Messwerte zu Nebeneingaben, dass die Gesamtzahl der Byte, die aus der Nebeneingabesammlung gelesen werden, viel höher ist als die Größe der Sammlung selbst (insgesamt geschriebene Byte). Die Nebeneingabesammlung ist 563 MB groß und die Summe der Byte, die von den auf die Sammlung zugreifenden Transformationen gelesen werden, beträgt fast 12 GB.

Um die Leistung dieser Pipeline zu verbessern, müssen Sie den Algorithmus neu gestalten, um zu vermeiden, dass die Nebeneingabedaten iteriert oder wiederholt abgerufen werden. In diesem Fall erstellt die Pipeline das kartesische Produkt zweier Sammlungen. Der Algorithmus durchläuft die gesamte Nebeneingabesammlung für jedes Element der Hauptsammlung. Sie können das Zugriffsmuster der Pipeline verbessern, indem Sie mehrere Elemente der Hauptsammlung gruppieren. Diese Änderung verringert die Häufigkeit, mit der Worker das Lesen der Nebeneingabesammlung wiederholen müssen.
Ein weiteres Leistungsproblem kann auftreten, wenn Ihre Pipeline einen Join vornimmt. Dabei wird ein ParDo auf eine oder mehrere große Nebeneingaben angewendet. In diesem Fall können die Worker einen hohen prozentualen Anteil der Verarbeitungszeit für die Join-Vorgänge aus den Sammlungen der Nebeneingaben lesen.
Die folgende Abbildung zeigt Messwerte zu Nebeneingaben, die dieses Problem verdeutlichen:

Die Transformation JoinBothCollections hat eine Verarbeitungszeit von mehr als 18 Minuten. Die Worker benötigen den Großteil dieser Verarbeitungszeit (10 Minuten) zum Lesen der 10 GB großen Nebeneingabesammlung. Um die Leistung dieser
Pipeline zu verbessern, können Sie anstelle von Nebeneingaben
CoGroupByKey
verwenden.