Dataflow-Monitoring-Oberfläche verwenden

Wenn Sie eine Pipeline mit dem verwalteten Dataflow-Dienst ausführen, können Sie diesen und alle anderen Jobs über die webbasierte Monitoring-Oberfläche von Dataflow aufrufen. Über die Monitoring-Oberfläche können Sie Ihre Dataflow-Jobs ansehen und mit ihnen interagieren.

Sie können mit der Google Cloud Console auf die Monitoring-Oberfläche von Dataflow zugreifen. Auf dieser wird Folgendes angezeigt:

  • Eine Liste aller derzeit ausgeführten Dataflow-Jobs und bereits abgeschlossene Jobs der letzten 30 Tage
  • Eine grafische Darstellung aller Pipelines
  • Details zum Status, zum Typ und zur SDK-Version eines Jobs
  • Links zu Informationen zu den Google Cloud-Diensten, auf denen Ihre Pipeline ausgeführt wird, z. B. Compute Engine und Cloud Storage.
  • Alle Fehler oder Warnungen, die während eines Jobs auftreten
  • Zusätzliche Diagnosen für einen Job.

Sie können in der Dataflow-Monitoring-Oberfläche Diagramme zum Job-Monitoring aufrufen. Diese Diagramme zeigen Messwerte für die Dauer eines Pipelinejobs und enthalten folgende Informationen:

  • Sichtbarkeit auf Schrittebene zum Erkennen von Schritten, die Pipelineverzögerungen verursachen können
  • Statistische Informationen, die auf ungewöhnliches Verhalten hinweisen können
  • E/A-Messwerte, mit denen Sie Engpässe in Quellen und Senken identifizieren können.

Auf die Dataflow-Monitoring-Oberfläche zugreifen

So greifen Sie auf die Monitoring-Oberfläche von Dataflow zu:

  1. Melden Sie sich in der Cloud Console an.
  2. Wählen Sie Ihr Google Cloud-Projekt aus.
  3. Klicken Sie auf das Menü in der oberen linken Ecke.
  4. Gehen Sie zum Abschnitt Big Data und klicken Sie auf Dataflow.

Eine Liste der Dataflow-Jobs mit ihrem Status wird angezeigt. Wenn Sie keine Jobs sehen, müssen Sie einen neuen Job ausführen. Informationen zum Ausführen eines Jobs finden Sie in den Kurzanleitungen zu Dataflow.

Liste der Dataflow-Jobs mit Jobs im Status „Aktiv”, „Erfolgreich” und „Fehlgeschlagen”.
Abbildung 1: Eine Liste von Dataflow-Jobs in der Cloud Console mit Jobs im Status Aktiv, Fehlgeschlagen und Erfolgreich.

Ein Job kann folgende Statuswerte haben:

  • : Die Monitoring-Oberfläche hat noch keinen Status vom Dataflow-Dienst erhalten.
  • Aktiv: Der Job wird ausgeführt.
  • Starting... (Wird gestartet): Der Job ist erstellt, das System benötigt jedoch vor dem Start noch etwas Vorbereitungszeit.
  • Queued (In der Warteschlange): Ein FlexRS-Job wurde in die Warteschlange gestellt.
  • Canceling... (Wird abgebrochen): Der Job wird gerade abgebrochen.
  • Abgebrochen: Der Job wurde abgebrochen.
  • Draining… (Draining läuft…): Der Job wird gerade per Drain beendet.
  • Draining angewendet: Der Job wird per Drain beendet.
  • Updating… (Wird aktualisiert…): Der Job wird gerade aktualisiert.
  • Aktualisiert: Der Job wurde aktualisiert.
  • Succeeded (Erfolgreich): Der Job wurde erfolgreich abgeschlossen.
  • Failed (Fehlgeschlagen): Der Job konnte nicht abgeschlossen werden.

Weitere Informationen zu einer Pipeline erhalten Sie durch Klicken auf den Jobnamen.

Auf Diagramme zum Job-Monitoring zugreifen

Klicken Sie auf der Dataflow-Monitoring-Oberfläche auf den Jobnamen, um auf seine Monitoring-Diagramme zuzugreifen. Die Seite Jobdetails wird mit folgenden Informationen angezeigt:

  • Jobgrafik: die visuelle Darstellung Ihrer Pipeline
  • Ausführungsdetails: Tool zur Optimierung der Pipeline-Leistung
  • Jobmesswerte: Messwerte zur Ausführung des Jobs
  • Bereich Jobinfo: beschreibende Informationen zu Ihrer Pipeline
  • Joblogs: vom Dataflow-Dienst auf Jobebene generierte Logs
  • Workerlogs: vom Dataflow-Dienst auf Worker-Ebene generierte Logs
  • Diagnose: Tabelle, in der angezeigt wird, wo Fehler in der ausgewählten Zeitachse aufgetreten sind, sowie mögliche Empfehlungen für Ihre Pipeline
  • Zeitauswahl: Tool, mit dem Sie die Zeitspanne der Messwerte anpassen können.

Innerhalb der Jobdetails können Sie die Jobansicht über Jobgrafik, Ausführungsdetails und Jobmesswerte wechseln.

Ansicht der Monitoring-Oberfläche von Dataflow mit ausgewähltem Tab für die Jobgrafik In diesem Modus können Sie Ihre Pipelinegrafik, Jobdetails, Joblogs, Worker-Logs, Diagnosedaten und das Zeitauswahl-Tool aufrufen.

Ansicht der Monitoring-Oberfläche von Dataflow mit ausgewähltem Tab für Jobmesswerte
In diesem Modus können Sie Diagramme zu Jobmesswerten, Jobdetails, Joblogs, Worker-Logs, Diagnosedaten und das Zeitauswahl-Tool aufrufen.

Cloud Monitoring-Benachrichtigungen erstellen

Dataflow ist vollständig in Cloud Monitoring eingebunden, sodass Sie Benachrichtigungen erstellen können, wenn Ihr Job einen benutzerdefinierten Grenzwert überschreitet. Klicken Sie zum Erstellen einer Cloud Monitoring-Benachrichtigung aus einem Messwertdiagramm auf Benachrichtigungsrichtlinie erstellen.

Über den Link **Benachrichtigungsrichtlinie erstellen** können Sie eine Benachrichtigung aus einem Messwertdiagramm erstellen.

Eine Anleitung zum Erstellen dieser Benachrichtigungen finden Sie auf der Seite Cloud Monitoring für Dataflow-Pipelines verwenden. Wenn Sie die Monitoring-Diagramme nicht sehen oder keine Benachrichtigungen erstellen können, benötigen Sie möglicherweise zusätzliche Monitoring-Berechtigungen.

Vollbildmodus

Klicken Sie zum Aufrufen eines Messwertdiagramms im Vollbildmodus auf .

Zeitauswahl-Tool verwenden

Sie können die Zeitspanne der Messwerte mit dem Tool zur Zeitauswahl anpassen. Sie können eine vordefinierte Dauer oder ein benutzerdefiniertes Zeitintervall für die Auswertung des Jobs auswählen.

Mit dem Zeitauswahl-Tool können Sie einen Zeitraum in Stunden- und Tagesschritten oder einen benutzerdefinierten Bereich auswählen.

Bei Streaming- oder In-Flight-Batch-Jobs gibt die Standardanzeige der Diagramme die Messwerte der letzten sechs Stunden für den entsprechenden Job wieder. Bei angehaltenen oder fertigen Streamingjobs gibt die Standardanzeige der Diagramme die gesamte Laufzeit der Jobdauer wieder.

Messwerte pro Schritt und Worker

Sie können Diagramme für die folgenden Messwerte aufrufen:

  • Datenaktualität (nur Streamingpipelines)
  • Systemlatenz (nur Streamingpipelines)
  • Autoscaling
  • Durchsatz
  • CPU-Auslastung
  • Logzähler für Worker-Fehler
  • Eingabe- und Ausgabemesswerte

Klicken Sie für den Zugriff auf zusätzliche Informationen in diesen Diagrammen auf die Ein-/Aus-Schaltfläche für die Legende, um auf „Diagrammlegende einblenden“ umzuschalten.

Die Ein-/Aus-Schaltfläche für die Legende befindet sich neben der Schaltfläche „Benachrichtigungsrichtlinie erstellen“.

Datenaktualität (nur Streamingpipelines)

Datenaktualität ist die Zeit zwischen der Echtzeit und dem Ausgabewasserzeichen. Jeder Schritt Ihrer Pipeline hat ein Ausgabedaten-Wasserzeichen. Ein Ausgabedaten-Wasserzeichen von T gibt an, dass alle Elemente mit einer Ereigniszeit vor T für die Berechnung verarbeitet wurden. Das Ausgabedaten-Wasserzeichen ist durch das früheste Eingabedaten-Wasserzeichen aller vorherigen Berechnungen begrenzt. Wenn irgendwelche Eingabedaten noch nicht verarbeitet wurden, könnte das Ausgabewasserzeichen zurückgehalten werden, was sich auf die Datenaktualität auswirkt.

Datenvisualisierung, die die Datenaktualität in einer Streaming-Pipeline zeigt.

Systemlatenz (nur Streamingpipelines)

Die Systemlatenz ist die aktuelle maximale Dauer in Sekunden, für die ein Datenelement verarbeitet wird oder auf die Verarbeitung wartet. Dieser Messwert gibt an, wie lange ein Element innerhalb einer Quelle in der Pipeline wartet. Die maximale Dauer wird nach der Verarbeitung angepasst. Weitere Hinweise:

  • Bei mehreren Quellen und Senken ist die Systemlatenz die maximale Zeitspanne, die ein Element innerhalb einer Quelle wartet, bevor es in alle Senken geschrieben wird.
  • Manchmal gibt eine Quelle keinen Wert für den Zeitraum an, für den ein Element innerhalb der Quelle wartet. Außerdem kann das Element keine Metadaten haben, um die Ereigniszeit zu definieren. In diesem Szenario wird die Systemlatenz ab dem Zeitpunkt berechnet, an dem die Pipeline das Element empfängt.

Datenvisualisierung, die die Systemlatenz in einer Streaming-Pipeline zeigt.

Autoscaling

Der Dataflow-Dienst wählt automatisch die zum Ausführen des Autoscaling-Jobs erforderliche Anzahl von Worker-Instanzen aus. Die Anzahl der Worker-Instanzen kann sich im Laufe der Zeit entsprechend den Jobanforderungen ändern.

Eine Datenvisualisierung, die die Anzahl der Worker in einer Pipeline anzeigt.

Sie können den Verlauf der Autoscaling-Änderungen durch Klicken auf die Schaltfläche Weiteren Verlauf aufrufen. Eine Tabelle mit Informationen zum Worker-Verlauf Ihrer Pipeline wird angezeigt.

Tabelle mit dem Verlauf des Worker-Verlaufs einer Pipeline.

Durchsatz

Der Durchsatz ist das Datenvolumen, das zu einem bestimmten Zeitpunkt verarbeitet wird. Dieser Messwert pro Schritt wird als Anzahl der Elemente pro Sekunde angezeigt. Wenn Sie diesen Messwert in Byte pro Sekunde sehen möchten, klicken Sie auf Durchsatz (Elemente/Sek.)  > Durchsatz (Byte/Sek.).

Datenvisualisierung, die den Durchsatz von vier Schritten in einer Pipeline zeigt.

Logzähler für Worker-Fehler

In Logzähler für Worker-Fehler sehen Sie die Fehlerquote der einzelnen Worker zum jeweiligen Zeitpunkt.

Zusammenfassung aller protokollierten Fehler und der Fehlerhäufigkeit

CPU-Auslastung

Die CPU-Auslastung ist die genutzte CPU-Kapazität, geteilt durch die CPU-Kapazität, die für die Verarbeitung verfügbar ist. Dieser Messwert pro Worker wird als Prozentsatz angezeigt.

Datenvisualisierung, die die CPU-Auslastung in einem Dataflow-Worker zeigt.

Eingabe- und Ausgabemesswerte

Eingabemesswerte und Ausgabemesswerte werden angezeigt, wenn Ihr Streaming Dataflow-Job Datensätze mit Pub/Sub liest oder schreibt.

Standardmäßig werden alle Eingabemesswerte und auch alle Ausgabemesswerte kombiniert. Um nur bestimmte Messwerte anzeigen zu lassen, verwenden das Drop-down-Menü zum Filtern in jedem Bereich. In den folgenden Abbildungen sind alle verfügbaren Filter aufgeführt.

Filter-Drop-down-Menü für Eingabemesswerte eines Dataflow-Jobs Filter-Drop-down-Menü für Ausgabemesswerte eines Dataflow-Jobs

Die folgenden beiden Diagramme werden sowohl im Bereich Eingabemesswerte als auch im Bereich Ausgabemesswerte angezeigt.

Eine Reihe von Diagrammen mit Eingabe- und Ausgabemesswerten für einen Dataflow-Job

Anfragen pro Sekunde

„Anfragen pro Sekunde“ ist die Rate von API-Anfragen der Quelle oder Senke zum Lesen oder Schreiben von Daten im Zeitverlauf. Wenn diese Rate auf null sinkt oder erheblich für einen längeren Zeitraum relativ zum erwarteten Verhalten sinkt, kann die Pipeline bestimmte Vorgänge möglicherweise nicht ausführen. Außerdem liegen unter Umständen keine Daten zum Lesen vor. Überprüfen Sie in einem solchen Fall die Jobschritte mit einem hohen Systemwasserzeichen. Überprüfen Sie auch die Worker-Logs auf Fehler oder Hinweise auf eine langsame Verarbeitung.

Ein Diagramm mit der Anzahl von API-Anfragen der Quelle oder Senke zum Lesen oder Schreiben von Daten im Zeitverlauf

Antwortfehler pro Sekunde nach Fehlertyp

„Antwortfehler pro Sekunde nach Fehlertyp“ ist die Rate fehlgeschlagener API-Anfragen von der Quelle oder Senke zum Lesen oder Schreiben von Daten im Zeitverlauf. Wenn solche Fehler häufig auftreten, verlangsamen diese API-Anfragen möglicherweise die Verarbeitung. Diese fehlgeschlagenen API-Anfragen müssen untersucht werden. Informationen zur Behebung dieser Probleme finden Sie in der allgemeinen Dokumentation zu E/A-Fehlercodes und allen von der Quelle oder Senke verwendeten Dokumentationen zu spezifischen Fehlercodes, z. B. den Pub/Sub-Fehlercodes.

Ein Diagramm mit der Rate fehlgeschlagener API-Anfragen der Quelle oder Senke zum Lesen oder Schreiben von Daten im Zeitverlauf

Metrics Explorer verwenden

Die folgenden Dataflow-E/A-Messwerte können in Metrics Explorer aufgerufen werden:

  • job/pubsub/write_count: Pub/Sub-Veröffentlichungsanfragen von PubsubIO.Write in Dataflow-Jobs
  • job/pubsub/read_count: Pub/Sub-Pull-Anfragen von Pubsub.IO.Read in Dataflow-Jobs
  • job/bigquery/write_count: BigQuery-Veröffentlichungsanfragen von BigQueryIO.Write in Dataflow-Jobs job/bigquery/write_count-Messwerte sind in Python-Pipelines mithilfe der WriteToBigQuery-Transformation verfügbar, wenn method='STREAMING_INSERTS' für Apache Beam Version 2.28.0 oder höher aktiviert ist.

Die vollständige Liste der Dataflow-Messwerte finden Sie in der Dokumentation zu Google Cloud-Messwerten.

Pipeline ansehen

Wenn Sie einen bestimmten Dataflow-Job auswählen, zeigt die Monitoring-Oberfläche Informationen zur Pipeline in diesem Job an. Dazu gehören eine grafische Darstellung der Pipeline während ihrer Ausführung in Dataflow eine Jobübersicht, das Joblog und detaillierte Informationen zu jedem Schritt in der Pipeline.

Die Dataflow-Monitoring-Oberfläche liefert eine grafische Darstellung Ihrer Pipeline: die Ausführungsgrafik. Darin wird jede Transformation in der Pipeline als Feld dargestellt. Jedes Feld enthält den Transformationsnamen und Informationen zum Jobstatus, darunter:

  • Aktiv: Der Schritt wird ausgeführt.
  • Queued (In der Warteschlange): Der Schritt in einem FlexRS-Job wurde in die Warteschlange gestellt.
  • Succeeded (Erfolgreich): Der Schritt wurde erfolgreich abgeschlossen.
  • Angehalten: Der Schritt wurde angehalten, weil der Job angehalten wurde.
  • Unknown (Unbekannt): In diesem Schritt konnte der Status nicht gemeldet werden.
  • Failed (Fehlgeschlagen): Der Schritt konnte nicht abgeschlossen werden.

Einfache Ausführungsgrafik

Pipelinecode:

Java: SDK 2.x


  // Read the lines of the input text.
  p.apply("ReadLines", TextIO.read().from(options.getInputFile()))
     // Count the words.
     .apply(new CountWords())
     // Write the formatted word counts to output.
     .apply("WriteCounts", TextIO.write().to(options.getOutput()));

Python


(
    pipeline
    # Read the lines of the input text.
    | 'ReadLines' >> beam.io.ReadFromText(args.input_file)
    # Count the words.
    | CountWords()
    # Write the formatted word counts to output.
    | 'WriteCounts' >> beam.io.WriteToText(args.output_path))

Java: SDK 1.x

Ausführungsgrafik:

Die Ausführungsgrafik für eine WordCount-Pipeline wie in der Dataflow-Überwachungsoberfläche angezeigt.

Abbildung 2: Der Pipelinecode für eine WordCount-Pipeline, wie sie in der Dataflow-Überwachungsoberfläche angezeigt wird.

Zusammengesetzte Transformationen

In der Ausführungsgrafik lassen sich zusammengesetzte Transformationen – solche, die mehrere verschachtelte Untertransformationen enthalten – maximieren. Diese Transformationen sind in der Grafik mit einem Pfeil markiert. Klicken Sie auf den Pfeil, um die Transformation zu maximieren und die darin enthaltenen Untertransformationen anzeigen zu lassen.

Pipelinecode:

Java: SDK 2.x


  // The CountWords Composite Transform
  // inside the WordCount pipeline.

  public static class CountWords
    extends PTransform<PCollection<String>, PCollection<String>> {

    @Override
    public PCollection<String> apply(PCollection<String> lines) {

      // Convert lines of text into individual words.
      PCollection<String> words = lines.apply(
        ParDo.of(new ExtractWordsFn()));

      // Count the number of times each word occurs.
      PCollection<KV<String, Long>> wordCounts =
        words.apply(Count.<String>perElement());

      return wordCounts;
    }
  }

Hinweis: FormatCounts im Bild rechts ist für dieses SDK ohne Bedeutung.

Python


# The CountWords Composite Transform inside the WordCount pipeline.
@beam.ptransform_fn
def CountWords(pcoll):
  return (
      pcoll
      # Convert lines of text into individual words.
      | 'ExtractWords' >> beam.ParDo(ExtractWordsFn())
      # Count the number of times each word occurs.
      | beam.combiners.Count.PerElement()
      # Format each word and count into a printable string.
      | 'FormatCounts' >> beam.ParDo(FormatCountsFn()))

Java: SDK 1.x

Ausführungsgrafik:

Die Ausführungsgrafik für eine WordCount-Pipeline mit erweiterter CountWords-Transformation, um die darin enthaltenen Untertransformationen zu zeigen

Abbildung 3: Der Pipelinecode für die Teilschritte der CountWords-Transformation, die mit der erweiterten Ausführungsgrafik der gesamten Pipeline angezeigt wird.

Transformationsnamen

Dataflow hat verschiedene Möglichkeiten, den Transformationsnamen zu ermitteln, der in der Ausführungsgrafik angezeigt wird:

Java: SDK 2.x

  • Dataflow kann den Namen verwenden, den Sie beim Anwenden der Transformation zuweisen. Das erste Argument, das Sie an die Methode apply geben, ist Ihr Transformationsname.
  • Dataflow kann den Transformationsnamen ableiten – entweder vom Klassennamen, wenn Sie eine benutzerdefinierte Transformation erstellt haben, oder vom Namen des Funktionsobjekts DoFn, wenn Sie eine Kerntransformation wie ParDo verwenden.

Python

  • Dataflow kann den Namen verwenden, den Sie beim Anwenden der Transformation zuweisen. Durch das Angeben des Arguments label der Transformation können Sie den Transformationsnamen angeben.
  • Dataflow kann den Transformationsnamen ableiten – entweder vom Klassennamen, wenn Sie eine benutzerdefinierte Transformation erstellt haben, oder vom Namen des Funktionsobjekts DoFn, wenn Sie eine Kerntransformation wie ParDo verwenden.

Java: SDK 1.x

Messwerte verstehen

Echtzeit

Wenn Sie auf einen Schritt klicken, wird der Messwert Echtzeit im Bereich Schrittinformationen angezeigt. Die Echtzeit gibt die ungefähre Zeit an, 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 zeigt die Echtzeit die Summe der für die einzelnen Schritte aufgewendeten Zeit an. Mit diesem Wert 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.

Sie können sehen, wie lange es dauert, einen Schritt in Ihrer Pipeline auszuführen.
Abbildung 4: Der Messwert für Wall time (Echtzeit) gibt an, ob Ihre Pipeline effizient ausgeführt wird.

Messwerte zu Nebeneingaben

Messwerte zu Nebeneingaben zeigen an, wie sich die Zugriffsmuster und -algorithmen Ihrer Nebeneingaben auf die Leistung der 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.

Die Monitoring-Oberfläche von Dataflow zeigt Messwerte zu Nebeneingaben an, wenn Sie eine Transformation auswählen, die eine Sammlung von Nebeneingaben erstellt oder verwendet. Sie können sich die Messwerte im Bereich Schrittinformationen unter Messwerte zu Nebeneingaben ansehen.

Transformationen, die eine Nebeneingabe erstellen

Wenn die ausgewählte 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

Wenn Ihre Pipeline eine zusammengesetzte Transformation enthält, die eine Nebeneingabe erzeugt, erweitern Sie die zusammengesetzte Transformation, bis Sie die spezifische Subtransformation sehen, von der die Nebeneingabe erzeugt wird. Wählen Sie dann diese Subtransformation aus, um den Abschnitt Messwerte zu Nebeneingaben zu sehen.

Abbildung 5 zeigt Messwerte zu Nebeneingaben für eine Transformation, die eine Sammlung von Nebeneingaben erstellt.

Sie können die Subtransformation auswählen, um deren Messwerte zu Nebeneingaben auf der Infoseite des Schritts anzeigen zu lassen.
Abbildung 5: Die Ausführungsgrafik enthält eine erweiterte zusammengesetzte Transformation (MakeMapView). Die Subtransformation, die die Nebeneingabe erstellt (CreateDataflowView), ist ausgewählt und die Messwerte zu Nebeneingaben werden in der Seitenleiste Details zum Schritt angezeigt.

Transformationen, die eine oder mehrere Nebeneingaben nutzen

Wenn die ausgewählte Transformation eine oder mehrere Nebeneingaben nutzt, 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

Wenn Ihre Pipeline eine zusammengesetzte Transformation enthält, die eine Nebeneingabe liest, erweitern Sie die zusammengesetzte Transformation, bis Sie die bestimmte Subtransformation sehen, die die Nebeneingabe liest. Wählen Sie dann diese Subtransformation aus, um den Abschnitt Messwerte zu Nebeneingaben zu sehen.

Abbildung 6 zeigt Messwerte zu Nebeneingaben für eine Transformation, die aus einer Sammlung von Nebeneingaben liest.

Sie können die Transformation auswählen, um deren Messwerte zu Nebeneingaben auf der Infoseite des Schritts anzeigen zu lassen.
Abbildung 6: Die Transformation JoinBothCollections liest aus einer Sammlung von Nebeneingaben. JoinBothCollections ist in der Ausführungsgrafik markiert und die Messwerte zu Nebeneingaben werden in der Seitenleiste Details zum Schritt angezeigt.

Leistungsprobleme bei Nebeneingaben identifizieren

Ein häufig auftretendes Leistungsproblem bei Nebeneingaben wird durch Wiederholung verursacht. 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 Abbildung 7 zeigen die Messwerte der Nebeneingaben, dass die Gesamtzahl der Byte, die aus der Sammlung von Nebeneingaben gelesen wurden, viel höher ist als die Größe der Sammlung selbst (insgesamt geschriebene Byte).

Sie können die Transformation auswählen, um deren Messwerte zu Nebeneingaben auf der Infoseite des Schritts anzeigen zu lassen.
Abbildung 7: Ein Beispiel für eine Wiederholung. 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.

Abbildung 8 zeigt Beispielmesswerte für Nebeneingaben, die dieses Problem verdeutlichen:

Sie können die Transformation auswählen, um deren Messwerte zu Nebeneingaben auf der Infoseite des Schritts anzeigen zu lassen.
Abbildung 8: Die Transformation JoinBothCollections hat eine Verarbeitungszeit von 18 Minuten und 31 Sekunden. Worker verbringen den Großteil der Verarbeitungszeit (10 Min. und 3 Sek.) mit dem Lesen der 10 GB großen Sammlung von Nebeneingaben.

Um die Leistung dieser Pipeline zu verbessern, können Sie anstelle von Nebeneingaben CoGroupByKey verwenden.

Diagnose

Auf dem Tab Diagnose unter Logs werden Fehler angezeigt, die in Ihren Pipelines generiert wurden.

Der Fehlerbericht enthält die folgenden Informationen:

  • Eine Liste von Fehlern mit Fehlermeldungen
  • Die Häufigkeit, mit der jeder Fehler aufgetreten ist
  • Ein Histogramm, das angibt, wann der jeweilige Fehler aufgetreten ist
  • Den Zeitpunkt, zu dem der Fehler zuletzt aufgetreten ist
  • Gibt an, wann der Fehler das erste Mal aufgetreten ist.
  • Der Status des Fehlers.

Klicken Sie in der Spalte Fehler auf die Beschreibung, um den Fehlerbericht für einen bestimmten Fehler aufzurufen. Die Seite Error Reporting wird angezeigt. Weitere Informationen zu der Seite finden Sie unter Fehler ansehen.

Nächste Schritte

  • Ausführungsdetails zum Optimieren eines Dataflow-Jobs verwenden

  • Cloud Monitoring entdecken, um Benachrichtigungen zu erstellen und Dataflow-Messwerte einschließlich benutzerdefinierter Messwerte anzusehen