Pipeline-Streaming-Modus festlegen

Dataflow unterstützt zwei Modi für Streamingjobs:

  • Genau einmal-Modus Dieser Modus ist der Standard 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 In diesem Modus werden Datensätze mindestens einmal verarbeitet, d. h., es gehen keine Eingabedatensätze verloren. In diesem Modus sind jedoch doppelte Einträge möglich. Bei Anwendungsfällen, in denen Duplikate toleriert werden, können Sie mit dem Modus „Mindestens einmal“ die Kosten und die Latenz Ihres Jobs erheblich senken.

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 sind Betrugserkennung, Netzwerkbedrohungserkennung und E-Commerce-Inventar-Dashboards.

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 ausgefü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 der Ausgabe-Sink keine genau einmalige Zustellung 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 Streamingmodus „Mindestens einmal“ profitieren.
  • Pipelines, die Daten aus Pub/Sub lesen Das Lesen aus Pub/Sub wird durch die Verwendung des Modus „Mindestens einmal“ erheblich optimiert.

Weitere Überlegungen

  • Der Modus „Mindestens einmal“ kann die Kosten und die Latenz einer Pipeline erheblich senken. 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 Streamingmodus wirkt sich darauf aus, wie die Streaming Engine Datensätze verarbeitet, ändert aber nicht die Semantik der E/A-Anschlüsse. Es wird empfohlen, die I/O-Semantik an den Streamingmodus anzupassen. Wenn Sie beispielsweise den Streamingmodus „mindestens einmal“ 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. Nehmen wir beispielsweise eine Funktion, die eine Nachricht empfängt und ihr den aktuellen Zeitstempel 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 Verarbeitung genau einmal ist die Standardeinstellung für alle Dataflow-Jobs. Wenn Sie den Streamingmodus „Mindestens einmal“ aktivieren möchten, legen Sie die streaming_mode_at_least_once Dienstoption 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.

Wenn Sie den Streamingmodus eines laufenden Jobs aktualisieren möchten, starten Sie einen Ersatzjob.

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 Modus „Mindestens einmal“ aktivieren möchten, legen Sie die Option streaming_mode_at_least_once im Flag additional-experiments fest:

--additional-experiments=streaming_mode_at_least_once

Wenn Sie den Modus „Genau einmal“ aktivieren möchten, legen Sie die Option streaming_mode_exactly_once im Flag additional-experiments 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 defaultStreamingMode nicht angeben und die Vorlage beide Modi unterstützt, ist der Modus „Genau einmal“ standardmäßig aktiviert.

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

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 der Streaming Engine-Recheneinheiten sind unabhängig vom Streamingmodus gleich. In den meisten Fällen verbraucht eine Pipeline jedoch deutlich weniger Ressourcen insgesamt, wenn der Modus „Mindestens einmal“ verwendet wird.

Nächste Schritte