Dataflow Portable Runner 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 inGoogle Cloudaus.

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

Der Portable Runner verwendet eine dienstbasierte Architektur, von der viele Pipelines profitieren:

Limits und Einschränkungen

Für den Dataflow Portable Runner gelten die folgenden Anforderungen und Einschränkungen:

  • Funktionen nur für den Portable Runner:Die folgenden Funktionen werden nur im Portable Runner unterstützt:
    • Verwaltete Transformationen und RunInference in Java.
    • Benutzerdefinierte Container
    • ARM-basierte Worker-VMs.
    • Splittable DoFns. Die Unterstützung für den Non-Portable-Runner wird geprüft.
  • Der Dataflow Portable Runner erfordert Streaming Engine für Streamingjobs.
  • Da der Dataflow Portable Runner Streaming Engine für Streamingjobs erfordert, muss für jede Apache Beam-Transformation, die den Dataflow Portable Runner 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 der Dataflow Portable Runner 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 mit dem Portable Runner nicht unterstützt. Wenn Sie die Klassen MapState und SetState mit Java-Pipelines verwenden möchten, aktivieren Sie Streaming Engine, deaktivieren Sie den Portable Runner und verwenden Sie das Apache Beam SDK Version 2.58.0 oder höher.
  • Für Batch- und Streamingpipelines, die das Apache Beam Java SDK verwenden, wird die Klasse AfterSynchronizedProcessingTime nicht unterstützt.
  • Der Portable Runner lässt sich in vielen Fällen besser skalieren als der Non-Portable Runner, die Arbeitsspeichernutzung kann bei festem Sharding jedoch höher sein.
  • Klassische Dataflow-Vorlagen können nicht mit einer anderen Version des Dataflow-Runners ausgeführt werden als der, mit der sie erstellt wurden. Das bedeutet, dass der Portable Runner nicht mit den von Google bereitgestellten klassischen Vorlagen aktiviert werden kann. Wenn Sie den Portable Runner für benutzerdefinierte Vorlagen aktivieren möchten, legen Sie beim Erstellen der Vorlage das entsprechende Flag fest. Dieses Flag hängt von der verwendeten SDK-Version ab:
    • Beam SDK-Versionen 2.74 und höher: --experiments=enable_portable_runner.
    • Beam SDK-Versionen 2.73 und früher: --experiments=use_runner_v2.
  • Aufgrund eines bekannten Autoscaling-Problems ist der Portable Runner standardmäßig für Batch-Java-Pipelines deaktiviert, für die eine zustandsbehaftete Verarbeitung erforderlich ist. Sie können den Portable Runner für diese Pipelines weiterhin aktivieren (siehe Portable Runner aktivieren), aber die Pipelineleistung kann dadurch stark beeinträchtigt werden.

  • In einigen Pipelines kann der Portable Runner die Häufigkeit von Konsistenzfehlern erhöhen. In den Logdateien wird möglicherweise der folgende Fehler angezeigt: „Internal consistency check failed, the output is likely incorrect. Bitte versuchen Sie es noch einmal.“ Eine mögliche Abhilfe besteht darin, nach dem Schritt Join/GrouByKey eine Reshuffle-Transformation hinzuzufügen. Wenn die Fehlerrate nicht tolerierbar ist und das Problem durch die Maßnahmen nicht behoben wird, deaktivieren Sie den Portable Runner.

Portable Runner aktivieren

Folgen Sie der Konfigurationsanleitung für Ihr Apache Beam SDK, um den Dataflow Portable Runner zu aktivieren.

Java

Für den Dataflow Portable Runner ist das Apache Beam Java SDK ab Version 2.30.0 erforderlich, 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 der Portable Runner standardmäßig aktiviert.

Wenn Sie den Portable Runner aktivieren möchten, führen Sie Ihren Job mit dem Experimentwert aus, der Ihrer Beam SDK-Version und Ihrem Pipeline-Typ entspricht:

  • Beam SDK-Versionen 2.74 und höher: enable_portable_runner (Batch) oder enable_streaming_java_runner (Streaming).
  • Beam SDK-Versionen 2.73 und früher: use_runner_v2.

Weitere Informationen finden Sie unter Experimentelle Dataflow-Pipelineoptionen festlegen.

Python

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

Der Dataflow Portable Runner 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 den portablen Runner, obwohl die Pipeline auf einer unterstützten SDK-Version ausgeführt wird. Wenn Sie den Job mit dem Portable Runner ausführen möchten, legen Sie den Experimentwert fest, der Ihrer Beam SDK-Version entspricht:

  • Beam SDK-Versionen 2.74 und höher: enable_portable_runner.
  • Beam SDK-Versionen 2.73 und früher: use_runner_v2.

Weitere Informationen finden Sie unter Experimentelle Dataflow-Pipelineoptionen festlegen.

Go

Der Dataflow Portable Runner ist der einzige Dataflow-Runner, der für das Apache Beam SDK for Go verfügbar ist. Der Portable Runner ist standardmäßig aktiviert.

Tragbaren Runner deaktivieren

Folgen Sie der Konfigurationsanleitung für Ihr Apache Beam SDK, um den Dataflow Portable Runner zu deaktivieren.

Java

Wenn Sie den Portable Runner deaktivieren möchten, legen Sie den entsprechenden Testlaufwert für Ihre Beam SDK-Version fest:

  • Beam SDK-Versionen 2.74 und höher: disable_portable_runner.
  • Beam SDK-Versionen 2.73 und früher: disable_runner_v2.

Der Job wird standardmäßig auf den nicht portablen Runner (Streaming Java Runner für Streaming) festgelegt. Weitere Informationen finden Sie unter Experimentelle Dataflow-Pipelineoptionen festlegen.

Python

Das Deaktivieren des Portable Runner wird in der Apache Beam Python SDK-Version 2.45.0 und höher nicht unterstützt.

Wenn in früheren Versionen des Python SDK für Ihren Job der auto_runner_v2-Test verwendet wird, können Sie den Portable Runner deaktivieren, indem Sie den disable_runner_v2-Test festlegen. Weitere Informationen finden Sie unter Experimentelle Dataflow-Pipelineoptionen festlegen.

Go

Der Dataflow Portable Runner kann in Go nicht deaktiviert werden. Er ist der einzige Dataflow-Runner, der für das Apache Beam SDK for Go verfügbar ist.

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 beim Portable Runner

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

  • Bei Jobs, die den Dataflow Portable Runner verwenden, werden auf der Worker-VM zwei Arten von Prozessen ausgeführt: ein SDK-Prozess und der 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 Portable Runner 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.