Dataflow Runner V2 verwenden

Wenn Sie Dataflow zum Ausführen Ihrer Pipeline verwenden, lädt der Dataflow-Runner den Pipelinecode und die Abhängigkeiten in einen Cloud Storage-Bucket hoch und erstellt einen Dataflow-Job. Dieser Dataflow-Job führt Ihre Pipeline in verwalteten Ressourcen in Google Cloud aus.

  • Für Batchpipelines, die das Apache Beam Java SDK Version 2.54.0 oder höher verwenden, ist Runner v2 standardmäßig aktiviert.
  • Für Pipelines, die das Apache Beam Java SDK verwenden, ist Runner v2 erforderlich, wenn mehrsprachige Pipelines ausgeführt, benutzerdefinierte Container oder Cloud Spanner- oder Bigtable-Änderungsstream-Pipelines verwendet werden. Verwenden Sie in anderen Fällen den Standard-Runner.
  • Für Pipelines, die das Apache Beam Python SDK Version 2.21.0 oder höher verwenden, ist Runner v2 standardmäßig aktiviert. Für Pipelines, die das Apache Beam Python SDK Version 2.45.0 und höher verwenden, ist Dataflow Runner v2 der einzige verfügbare Dataflow-Runner.
  • Für das Apache Beam SDK für Go ist Dataflow Runner v2 der einzige verfügbare Dataflow-Runner.

Runner v2 verwendet eine dienstbasierte Architektur, von der einige Pipelines profitieren:

Limits und Einschränkungen

Für Dataflow Runner v2 gelten die folgenden Anforderungen:

  • Dataflow Runner v2 ist nur in den unter Dataflow-Standorte aufgeführten Regionen verfügbar.
  • Dataflow Runner v2 erfordert Streaming Engine für Streaming-Jobs und Dataflow Shuffle für Batchjobs.
  • Da Dataflow Runner v2 das Streaming von Streaming Engine-Jobs verlangt, muss für jede Apache Beam-Transformation, die Dataflow Runner v2 erfordert, auch Streaming Engine für Streamingjobs verwendet werden. Der Pub/Sub Lite-E/A-Connector für das Apache Beam SDK for Python ist beispielsweise eine sprachübergreifende Transformation, für die Dataflow Runner v2 erforderlich ist. Wenn Sie versuchen, Streaming Engine für einen Job oder eine Vorlage zu deaktivieren, der diese Transformation verwendet, schlägt der Job fehl.
  • Für Streamingpipelines, die das Apache Beam Java SDK verwenden, werden die Klassen MapState und SetState nicht unterstützt.
  • Für Batch- und Streamingpipelines, die das Apache Beam Java SDK verwenden, werden die Klassen OrderedListState und AfterSynchronizedProcessingTime nicht unterstützt.

Dataflow Runner v2 aktivieren

Folgen Sie der Konfigurationsanleitung für Ihr Apache Beam SDK, um Dataflow Runner v2 zu aktivieren:

Java

Dataflow Runner v2 erfordert das Apache Beam Java SDK für Version 2.30.0 oder höher, wobei Version 2.44.0 oder höher empfohlen wird.

Für Batchpipelines, die das Apache Beam Java SDK Version 2.54.0 oder höher verwenden, ist Runner v2 standardmäßig aktiviert.

Führen Sie den Job mit dem Flag --experiments=use_runner_v2 aus, um Runner v2 zu aktivieren.

Mit dem Flag --experiments=disable_runner_v2 deaktivieren Sie Runner v2.

Python

Für Pipelines, die das Apache Beam Python SDK Version 2.21.0 oder höher verwenden, ist Runner v2 standardmäßig aktiviert.

Dataflow Runner v2 wird nicht mit den Apache Beam Python SDK-Versionen 2.20.0 und früheren Versionen unterstützt.

In einigen Fällen verwendet Ihre Pipeline möglicherweise nicht Runner v2, obwohl die Pipeline auf einer unterstützten SDK-Version ausgeführt wird. Führen Sie in diesen Fällen das Flag --experiments=use_runner_v2 aus, um den Job mit Runner v2 auszuführen.

Wenn Sie Runner V2 deaktivieren möchten und Ihr Job als auto_runner_v2-Test identifiziert wird, verwenden Sie das Flag --experiments=disable_runner_v2. Das Deaktivieren von Runner V2 wird in der Apache Beam Python SDK-Version 2.45.0 und höher nicht unterstützt.

Einfach loslegen (Go)

Dataflow Runner v2 ist der einzige für das Apache Beam SDK for Go verfügbare Dataflow-Runner. Runner v2 ist standardmäßig aktiviert.

Job überwachen

Verwenden Sie die Monitoring-Oberfläche, um Dataflow-Jobmesswerte wie Speicherauslastung, CPU-Auslastung und mehr anzuzeigen.

Worker-VM-Logs sind über den Log-Explorer und die Dataflow-Monitoring-Oberfläche verfügbar. Worker-VM-Logs enthalten Logs aus dem Runner-Nutzungsprozess und Logs aus den SDK-Prozessen. Sie können die VM-Logs verwenden, um Fehler in Ihrem Job zu beheben.

Fehlerbehebung für Runner v2

Informationen zur Fehlerbehebung bei Jobs mit Dataflow Runner v2 finden Sie unter Schritte zur Standardpipeline-Fehlerbehebung. Die folgende Liste enthält zusätzliche Informationen zur Funktionsweise von Dataflow Runner v2:

  • Dataflow Runner v2-Jobs führen auf der Worker-VM zwei Arten von Prozessen aus: einen SDK-Prozess und den Runner-Nutzungsprozess. Abhängig von der Pipeline und dem VM-Typ können ein oder mehrere SDK-Prozesse vorhanden sein, aber nur ein Runner-Nutzungsprozess pro VM.
  • Mit SDK-Prozessen werden Nutzercode und andere sprachspezifische Funktionen ausgeführt. Der Runner-Nutzungsprozess verwaltet alles andere.
  • Mit der Ausführung des Runner-Nutzungsprozesses wird gewartet, bis alle SDK-Prozesse eine Verbindung zu ihm hergestellt haben, bevor er von Dataflow Arbeit anfordert.
  • Jobs können sich verzögern, wenn die Worker-VM beim Starten des SDK-Prozesses Abhängigkeiten herunterlädt und installiert. Wenn Probleme während eines SDK-Prozesses auftreten, z. B. beim Starten oder beim Installieren von Bibliotheken, meldet der Worker den Status als fehlerhaft. Wenn die Startzeiten zunehmen, aktivieren Sie die Cloud Build API in Ihrem Projekt und senden Sie die Pipeline mit dem Parameter --prebuild_sdk_container_engine=cloud_build.
  • Da Dataflow Runner v2 die Prüfpunktausführung verwendet, wartet jeder Worker möglicherweise bis zu fünf Sekunden, während die Änderungen zwischengespeichert werden und bevor die Änderungen zur weiteren Verarbeitung gesendet werden. Daher wird eine Latenz von etwa sechs Sekunden erwartet.
  • Zur Diagnose von Problemen Ihres Nutzercodes müssen Sie die Worker-Logs aus den SDK-Prozessen prüfen. Wenn Sie in den Runner-Nutzungslogs Fehler finden, wenden Sie sich an den Support, um sie zu melden.
  • Informationen zur Behebung häufiger Fehler in Zusammenhang mit Dataflow-Pipelines in mehreren Sprachen-finden Sie in der Anleitung Pipelines in mehreren Sprachen.