Pipeline-Streaming-Modus festlegen

Dataflow unterstützt zwei Modi für Streamingjobs:

  • Genau einmal-Modus Dieser Modus ist der Standardmodus 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 einmalige Übermittlung. Dieser Modus sorgt dafür, dass Datensätze mindestens einmal verarbeitet werden (d. h., es gehen keine Eingabedatensätze verloren). In diesem Modus sind jedoch doppelte Einträge möglich. Für Anwendungsfälle, in denen Duplikate toleriert werden können, kann der „Mindestens einmal“-Modus die Kosten und die Latenz Ihres Jobs erheblich senken.

Streamingmodus auswählen

Wählen Sie den „Genau einmal“-Modus aus, wenn Sie genaue Ergebnisse aus der Pipeline und vorhersagbare 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 die Betrugserkennung, die Erkennung von Netzwerkbedrohungen 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 nachgelagert von Dataflow erfolgt. 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 und Sie können 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 ist im „Mindestens einmal“-Modus deutlich optimiert.

Weitere Überlegungen

  • Der Modus „Mindestens einmal“ kann die Kosten und Latenz einer Pipeline erheblich reduzieren. Die genauen Auswirkungen hängen von den Besonderheiten der Pipeline ab. Testen Sie das "mindestens einmal" Streaming unter realistischen Lasten, um die Auswirkungen zu bewerten.

  • Wenn Sie den „Mindestens einmal“-Modus verwenden, hängt die Anzahl der doppelten Datensätze von der Anzahl der Wiederholungsversuche ab. Die Baseline-Rate ist in der Regel niedrig (<1%). Spitzen können jedoch 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 von I/O-Connectors. 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. Bei von Google bereitgestellten Dataflow-Vorlagen wird diese Option automatisch aktiviert, wenn Sie Streaming „Mindestens einmal“ verwenden.

  • Elementweise Transformationen wie Map sind nicht immer idempotent. Nehmen wir zum Beispiel eine Funktion, die eine Nachricht empfängt und den aktuellen Zeitstempel daran 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 „Genau einmal“-Streamingmodus.

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

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 gewünschten Streamingmodus aus. Wenn die Vorlage nur einen Modus unterstützt, ist diese Option deaktiviert.

gcloud

Um den „Mindestens einmal“-Modus zu aktivieren, legen Sie die Option streaming_mode_at_least_once im Flag additional-experiments fest:

--additional-experiments=streaming_mode_at_least_once

Um den „Genau einmal“-Modus zu aktivieren, 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 durch die 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 -Konsole bereitstellen. Das Feld defaultStreamingMode ist optional und gibt den Standard-Streamingmodus für die Vorlage an. Wenn Sie defaultStreamingMode nicht angeben und die Vorlage beide Modi unterstützt, ist der Modus „Genau einmal“ der Standardmodus.

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

Streamingmodus eines Jobs ansehen

Rufen Sie in derGoogle Cloud -Console die Seite Jobs auf, um den Streamingmodus für einen Job anzusehen.

ZU JOBS

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

Beschränkungen

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

Preise

Im At-least-once-Modus wird immer die ressourcenbasierte Abrechnung verwendet, bei der Ihnen die von Ihrem Job insgesamt verbrauchten Ressourcen in Rechnung gestellt werden.

Die Kosten pro Einheit für Streaming Engine-Recheneinheiten sind unabhängig vom Streamingmodus gleich. In den meisten Fällen verbraucht eine Pipeline im „Mindestens einmal“-Modus jedoch deutlich weniger Ressourcen.

Nächste Schritte