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 in Google 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-Streamingpipelines mit hohem Umfang den Streaming Java Runner (Standard).
  • 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 oder 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:

Nutzungsempfehlungen

Sofern Ihre Pipeline nicht von einem der in diesem Dokument beschriebenen Limits betroffen ist, können Sie anhand der folgenden Anleitung den geeigneten Runner basierend auf Ihren Pipelineanforderungen auswählen:

Wählen Sie den Portable Runner für Folgendes aus:

  • Alle Batchpipelines.
  • Streamingpipelines, die das Apache Beam Python SDK oder das Apache Beam SDK for Go verwenden.
  • Streamingpipelines, die GPU-Unterstützung für die Verarbeitung von Machine-Learning-Daten erfordern.
  • Pipelines, die eine der Funktionen verwenden, die nur für den Portable Runner verfügbar sind.

Wählen Sie den Streaming Java Runner für Folgendes aus:

  • Streamingpipelines, die das Apache Beam Java SDK verwenden.

Limits und Einschränkungen

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

  • Funktionen, die nur für den Portable Runner verfügbar sind:Die folgenden Funktionen werden nur für den 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 derzeit 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.
  • Der Portable Runner skaliert in vielen Batchfällen besser als der Non-Portable Runner, aber die Arbeitsspeichernutzung kann bei festem Sharding 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 für von Google bereitgestellte klassische Vorlagen nicht 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 Problems mit dem Autoscaling ist der Portable Runner standardmäßig für Batch Java-Pipelines deaktiviert, die zustandsorientierte Verarbeitung erfordern. Sie können den Portable Runner für diese Pipelines weiterhin aktivieren (siehe Portable Runner aktivieren), aber die Pipelineleistung kann dadurch erheblich beeinträchtigt werden.

  • Bei 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. Please retry the job“ (Interne Konsistenzprüfung fehlgeschlagen, die Ausgabe ist wahrscheinlich falsch. Eine mögliche Abhilfe besteht darin, nach dem Join/GroupByKey Schritt eine Reshuffle Transformation hinzuzufügen. Eine mögliche Abhilfe besteht darin, nach dem Schritt `Join`/`GroupByKey` eine `Reshuffle`-Transformation hinzuzufügen.

Wenn die Fehlerrate nicht akzeptabel ist und die Abhilfe das Problem nicht löst, versuchen Sie, den Portable Runner zu deaktivieren.

Um den Dataflow Portable Runner zu aktivieren, folgen Sie den Konfigurationsanweisungen für Ihr Apache Beam SDK.

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

Der Dataflow Portable Runner erfordert Apache Beam Java SDK Version 2.30.0 oder höher, wobei Version 2.44.0 oder höher empfohlen wird.

Der Dataflow Portable Runner erfordert das Apache Beam Java SDK 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 der Portable Runner standardmäßig aktiviert.

  • Führen Sie den Job mit dem Testwert aus, der Ihrer Beam SDK-Version und Ihrem Pipeline-Typ entspricht, um den Portable Runner zu aktivieren: enable_portable_runner.
  • **Hinweis** : In den Logmeldungen der Beam SDK-Version 2.74 wird der Portable Runner weiterhin als _Runner v2_ bezeichnet. use_runner_v2.

Beam SDK-Versionen 2.73 und früher: `use_runner_v2`.

Weitere Informationen finden Sie unter Experimentelle Dataflow-Pipelineoptionen festlegen.

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

Der Dataflow Portable Runner wird mit den Apache Beam Python SDK-Versionen 2.20.0 und früher nicht unterstützt.

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 Portable Runner, obwohl die Pipeline auf einer unterstützten SDK-Version ausgeführt wird.

  • Legen Sie den Testwert fest, der Ihrer Beam SDK-Version entspricht, um den Job mit dem Portable Runner auszuführen: enable_portable_runner.
  • **Hinweis** : In den Logmeldungen der Beam SDK-Version 2.74 wird der Portable Runner weiterhin als _Runner v2_ bezeichnet. use_runner_v2.

Beam SDK-Versionen 2.73 und früher: `use_runner_v2`.

Weitere Informationen finden Sie unter Experimentelle Dataflow-Pipelineoptionen festlegen.

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

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.

Um den Dataflow Portable Runner zu deaktivieren, folgen Sie den Konfigurationsanweisungen für Ihr Apache Beam SDK.

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

Um den Portable Runner zu deaktivieren, legen Sie den Experimentwert fest, der Ihrer Beam SDK-Version entspricht:

  • Legen Sie den Testwert fest, der Ihrer Beam SDK-Version entspricht, um den Portable Runner zu deaktivieren:
    • Für Batch verwenden Sie disable_portable_runner.
    • Verwenden Sie für Batch enable_streaming_java_runner.
  • Beam SDK-Versionen 2.73 und früher: disable_runner_v2.

Dadurch wird der Job standardmäßig auf den Non-Portable Runner oder den Streaming Java Runner für Streaming eingestellt. Weitere Informationen finden Sie unter Experimentelle Pipelineoptionen festlegen.

Weitere Informationen finden Sie unter Experimentelle Dataflow-Pipelineoptionen festlegen.

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

Das Deaktivieren des Portable Runner wird in der Apache Beam Python SDK-Version 2.45.0 und höher nicht unterstützt. auto_runner_v2 disable_runner_v2 Weitere Informationen finden Sie unter Experimentelle Pipelineoptionen festlegen.

Weitere Informationen finden Sie unter Experimentelle Dataflow-Pipelineoptionen festlegen.

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

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

Job überwachen

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 zur Fehlerbehebung für Ihren Job verwenden.

Fehlerbehebung für den Portable Runner

Fehlerbehebung beim Portable Runner standard pipeline troubleshooting steps Informationen zur Fehlerbehebung bei Jobs mit dem Dataflow Portable Runner finden Sie unter Schritte zur Standardpipeline-Fehlerbehebung.

  • Dataflow Portable Runner-Jobs führen zwei Arten von Prozessen auf der Worker-VM aus: SDK-Prozess und Runner-Harness-Prozess. Dataflow Portable Runner-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.
  • 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 für Ihr Projekt und übermitteln Sie Ihre Pipeline mit dem folgenden Parameter: --prebuild_sdk_container_engine=cloud_build.
  • Da Dataflow Portable Runner Checkpointing verwendet, kann jeder Worker bis zu fünf Sekunden warten, während er Änderungen puffert, bevor er die Änderungen zur weiteren Verarbeitung sendet. Da der 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.
  • 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.