Pipeline-Streaming-Modus festlegen

Dataflow unterstützt zwei Modi für Streamingjobs:

  • Genau einmal-Modus Dieser Modus ist die Standardeinstellung für alle Dataflow-Streamingjobs. In diesem Modus stellt Dataflow sicher, dass Datensätze nicht gelöscht oder dupliziert werden, wenn die Daten durch die Pipeline geleitet werden.
  • Mindestens einmal-Modus. Dieser Modus stellt sicher, dass Datensätze mindestens einmal verarbeitet werden (d. h., keine Eingabedatensätze gehen verloren). In diesem Modus sind jedoch doppelte Einträge möglich. Bei Anwendungsfällen, die Duplikate tolerieren können, kann der "Mindestens einmal"-Modus die Kosten und die Latenz Ihres Jobs erheblich verringern.

Streamingmodus auswählen

Wählen Sie den Modus „Genau einmal“ aus, wenn Sie genaue Ergebnisse aus der Pipeline und vorhersehbare Semantik benötigen. Beispiel:

  • Pipelines mit Aggregationen wie „Anzahl“, „Summe“ oder „Mittelwert“.
  • Geschäftskritische Anwendungsfälle, bei denen Datensätze nur einmal, also nur einmal verarbeitet werden. Beispiele hierfür sind Dashboards für die Betrugserkennung, die Erkennung von Netzwerkbedrohungen und das E-Commerce-Inventar.

Wählen Sie den Streamingmodus „Mindestens einmal“ aus, wenn Ihre Arbeitslast doppelte Datensätze tolerieren kann und von reduzierten Kosten oder reduzierter Latenz profitieren könnte. Beispiel:

  • Arbeitslasten, bei denen die Deduplizierung nach Dataflow durchgeführt wird. Beispielsweise Pipelines, die in BigQuery oder einen SQL-Datenspeicher schreiben.
  • Reine Zuordnungspipelines ohne Aggregationen. Beispiele sind die Log-verarbeitung, die Change Data Capture oder ETL-Jobs (Extract, Transform, Load), bei denen die Pipeline nur Elementtransformationen wie die Schemaübersetzung ausführt.
  • Pipelines, bei denen die Ausgabesenke keine genau einmalige Übermittlung garantieren kann, z. B. Pub/Sub. In diesem Fall ist die Deduplizierung innerhalb der Pipeline möglicherweise nicht erforderlich. Sie können dann von den reduzierten Kosten und der geringeren Latenz des „Mindestens einmal“-Streamingmodus profitieren.
  • Pipelines, die Daten aus Pub/Sub lesen Das Lesen aus Pub/Sub ist im "Mindestens einmal"-Modus erheblich optimiert.

Weitere Überlegungen

  • Mit dem Modus „mindestens einmal“ können die Kosten und die Latenz einer Pipeline erheblich reduziert werden. Die genaue Auswirkung hängt von den Besonderheiten der Pipeline ab. Testen Sie das "mindestens einmal" Streaming unter realistischen Lasten, um die Auswirkungen zu bewerten.

  • Wenn Sie den Modus „Mindestens einmal“ verwenden, hängt die Häufigkeit doppelt vorhandener Datensätze von der Anzahl der Wiederholungen ab. Die Baseline-Rate ist in der Regel niedrig (< 1 %). Es können jedoch Spitzen auftreten, wenn Worker-Knoten ausfallen oder andere Bedingungen wiederholte RPC-Aufrufe verursachen.

  • Der Streaming-Modus wirkt sich darauf aus, wie Streaming Engine Datensätze verarbeitet, ändert jedoch nicht die Semantik von E/A-Connectors. Es wird empfohlen, die I/O-Semantik an den Streamingmodus anzupassen. Wenn Sie beispielsweise den "Mindestens einmal"-Streamingmodus mit dem BigQuery-E/A-Connector verwenden, legen Sie den Schreibmodus auf STORAGE_API_AT_LEAST_ONCE fest. In von Google bereitgestellten Dataflow-Vorlagen wird diese Option automatisch aktiviert, wenn Sie Streaming mit der Option „Mindestens einmal“ verwenden.

  • Elementweise Transformationen wie Map sind nicht immer idempotent. Stellen Sie sich beispielsweise eine Funktion vor, die eine Nachricht empfängt und den aktuellen Zeitstempel an diese anhängt. In diesem Fall kann ein doppelter Datensatz mehrere verschiedene Ausgaben liefern. Der Modus „Mindestens einmal“ ist für diese Pipeline möglicherweise nicht geeignet.

Streamingmodus festlegen

Die genau einmalige Verarbeitung ist die Standardeinstellung für alle Dataflow-Jobs. Wenn Sie den "Mindestens einmal"-Streamingmodus aktivieren möchten, legen Sie die Dienstoption streaming_mode_at_least_once fest.

Java

--dataflowServiceOptions=streaming_mode_at_least_once

Python

--dataflow_service_options=streaming_mode_at_least_once

Go

--dataflow_service_options=streaming_mode_at_least_once

Wenn Sie die Option streaming_mode_at_least_once nicht angeben, verwendet Dataflow den Streamingmodus „Genau einmal“.

Wenn Sie die Option streaming_mode_at_least_once festlegen, wird in Dataflow automatisch die Streaming Engine mit ressourcenbasierter Abrechnung aktiviert.

Beenden Sie den vorhandenen Job und führen Sie einen Ersatzjob aus, um den Streamingmodus für einen laufenden Job zu aktualisieren. Weitere Informationen finden Sie unter Ersatzjob starten.

Streamingmodus für eine Vorlage auswählen

Führen Sie die folgenden Schritte aus, um beim Ausführen einer Dataflow-Streaming-Vorlage den Streaming-Modus auszuwählen:

Console

  1. Rufen Sie in der Google Cloud Console die Dataflow-Seite Jobs auf.

    ZU JOBS

  2. Klicken Sie auf Job aus Vorlage erstellen.

  3. Wählen Sie im Drop-down-Menü Dataflow-Vorlage die Vorlage aus, die Sie ausführen möchten.

  4. Wählen Sie unter Streamingmodus den Streamingmodus aus. Wenn die Vorlage nur einen Modus unterstützt, ist diese Option deaktiviert.

gcloud

Wenn Sie den "Mindestens einmal"-Modus aktivieren möchten, legen Sie im Flag additional-experiments die Option streaming_mode_at_least_once fest:

--additional-experiments=streaming_mode_at_least_once

Wenn Sie den "Genau einmal"-Modus aktivieren möchten, legen Sie im Flag additional-experiments die Option streaming_mode_exactly_once fest:

--additional-experiments=streaming_mode_exactly_once

Diese beiden Optionen schließen sich gegenseitig aus. Wenn Sie keine dieser Optionen festlegen, wird für die Vorlage standardmäßig ein Streamingmodus verwendet, der anhand der Vorlagenmetadaten bestimmt wird. Weitere Informationen finden Sie unter Benutzerdefinierte Vorlagen.

REST

Verwenden Sie das Feld additionalExperiments im Objekt FlexTemplateRuntimeEnvironment (Flex-Vorlagen) oder RuntimeEnvironment (klassische Vorlagen).

{
  additionalExperiments : ["streaming_mode_at_least_once"]
  ...
}

Benutzerdefinierte Vorlagen

Wenn Sie eine benutzerdefinierte Vorlage erstellen, die die mindestens einmalige Verarbeitung unterstützt, fügen Sie der Metadatendatei der Vorlage die folgenden Felder der obersten Ebene hinzu:

{
  "streaming": true,
  "supportsAtLeastOnce": true,
  "supportsExactlyOnce": true,
  "defaultStreamingMode": "AT_LEAST_ONCE"
}

Mit diesen Metadatenfeldern können Nutzer den Streamingmodus auswählen, wenn sie die Vorlage in der Google Cloud Console bereitstellen. Das Feld defaultStreamingMode ist optional und gibt den Standardstreamingmodus für die Vorlage an. Wenn Sie defaultStreamingModeg nicht angeben und die Vorlage beide Modi unterstützt, ist der Modus „Genau einmal“ standardmäßig aktiviert.

Weitere Informationen finden Sie in den folgenden Abschnitten der Dokumentation zu Dataflow-Vorlagen:

Streamingmodus eines Jobs ansehen

Den Streamingmodus für einen Job finden Sie in der Google Cloud Console auf der Seite Jobs.

ZU JOBS

Der Streamingmodus wird auch auf der Seite mit den Jobdetails im Bereich Jobinformationen aufgeführt.

Beschränkungen

Für den Streamingmodus „Mindestens einmal“ ist die Streaming Engine mit ressourcenbasierter Abrechnung erforderlich.

Preise

Im Modus „mindestens einmal“ wird immer die ressourcenbasierte Abrechnung verwendet. Dabei werden Ihnen die von Ihrem Job insgesamt verbrauchten Ressourcen in Rechnung gestellt.

Die Kosten pro Einheit von Streaming Engine-Recheneinheiten sind unabhängig vom Streamingmodus immer gleich. In den meisten Fällen verbraucht eine Pipeline jedoch im "Mindestens einmal"-Modus deutlich weniger Gesamtressourcen.

Nächste Schritte