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 Batch-Pipelines, 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 for Go ist Dataflow Runner v2 der einzige verfügbare Dataflow-Runner.
Runner v2 verwendet eine dienstbasierte Architektur, von der einige Pipelines profitieren:
Mit dem Dataflow Runner v2 können Sie einen Python-Container vorerstellen, wodurch sich die VM-Startzeiten und die Leistung des horizontalen Autoscalings verbessern lassen. Weitere Informationen finden Sie unter Python-Abhängigkeiten vorab erstellen.
Dataflow Runner v2 unterstützt mehrsprachige Pipelines, ein Feature, das es Ihrer Apache Beam-Pipeline ermöglicht, in anderen Apache Beam SDKs definierte Transformationen zu nutzen. Derzeit unterstützt Dataflow Runner v2 die Verwendung von Java-Transformationen aus einer Python SDK-Pipeline sowie die Verwendung von Python-Transformationen aus einer Java SDK-Pipeline. Wenn Sie Apache Beam-Pipelines ohne Runner v2 ausführen, verwendet der Dataflow-Runner sprachspezifische Worker.
Limits und Einschränkungen
Für Dataflow Runner v2 gelten die folgenden Anforderungen:
- Dataflow Runner v2 erfordert Streaming Engine für Streamingjobs.
- 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
undSetState
mit Runner v2 nicht unterstützt. Wenn Sie die KlassenMapState
undSetState
mit Java-Pipelines verwenden möchten, aktivieren Sie die Streaming Engine, deaktivieren Sie Runner v2 und verwenden Sie das Apache Beam SDK in der Version 2.58.0 oder höher. - Für Batch- und Streamingpipelines, die das Apache Beam Java SDK verwenden, werden die Klassen
OrderedListState
undAfterSynchronizedProcessingTime
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 Batch-Pipelines, 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.
Verwenden Sie das Flag --experiments=disable_runner_v2
, um Runner v2 zu deaktivieren.
Einige Pipelines sind automatisch für Runner v2 aktiviert.
Wenn Ihre Pipeline diese Funktion nicht nutzen soll, verwenden Sie die Pipelineoption --experiments=disable_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.
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
Über die Monitoring-Oberfläche können Sie Dataflow-Jobmesswerte wie Speicherauslastung, CPU-Auslastung und mehr ansehen.
Worker-VM-Logs sind über den Log-Explorer und die Dataflow-Monitoring-Oberfläche verfügbar. Worker-VM-Logs umfassen Logs aus dem Runner-Nutzungsprozess und Logs aus den SDK-Prozessen. Sie können die VM-Logs verwenden, um Fehler bei 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.