Streaming Engine für Streamingjobs verwenden

Streaming Engine von Dataflow verschiebt die Pipelineausführung aus den Worker-VMs in das Dataflow-Dienst-Backend. Wenn Sie Streaming Engine nicht für Streamingjobs verwenden, führt der Dataflow-Runner die Schritte der Streamingpipeline vollständig auf Worker-VMs aus und beansprucht CPU-Leistung, Arbeitsspeicher und nichtflüchtigen Speicherplatz auf dem Worker.

Streaming Engine ist für die folgenden Pipelines standardmäßig aktiviert:

  • Streamingpipelines, die das Apache Beam Python SDK in der Version 2.21.0 oder höher und Python 3 verwenden.
  • Streamingpipelines, die das Apache Beam Go SDK 2.33.0 oder höher verwenden.

Weitere Informationen zur Implementierung von Streaming Engine finden Sie unter Streaming Engine: Ausführungsmodell für hochskalierbare Datenverarbeitung mit niedriger Latenz.

Vorteile

Das Streaming Engine-Modell bietet folgende Vorteile:

  • Geringere Nutzung der CPU-, Arbeitsspeicher- und nichtflüchtigen Speicherressourcen auf den Worker-VMs. Streaming Engine funktioniert am besten mit kleineren Worker-Maschinentypen (n1-standard-2 statt n1-standard-4) und benötigt nichtflüchtigen Speicher nur für ein kleines Worker-Bootlaufwerk, was die Ressourcen- und Kontingentnutzung reduziert.
  • Reaktionsschnelleres horizontales Autoscaling bei Schwankungen im eingehenden Datenvolumen. Streaming Engine ermöglicht eine reibungslosere und detailliertere Skalierung von Workern.
  • Bessere Unterstützung, da Sie Ihre Pipelines nicht neu bereitstellen müssen, um Dienstaktualisierungen anzuwenden.

Die Reduzierung der Worker-Ressourcen ist größtenteils auf die Übertragung der Arbeit an den Dataflow-Dienst zurückzuführen. Daher ist die Nutzung von Streaming Engine mit einer Gebühr verbunden.

Unterstützung und Einschränkungen

  • Für das Java SDK erfordert Streaming Engine die Apache Beam SDK-Version 2.10.0 oder höher.
  • Für das Python SDK benötigt Streaming Engine die Apache Beam SDK-Version 2.16.0 oder höher.
  • Für das Go SDK benötigt Streaming Engine die Apache Beam SDK-Version 2.33.0 oder höher.
  • Sie können keine bereits ausgeführten Pipelines für die Verwendung von Streaming Engine aktualisieren. Wenn Ihre Pipeline in der Produktion ohne Streaming Engine ausgeführt wird und Sie Streaming Engine verwenden möchten, beenden Sie die Pipeline mit der Dataflow-Option Per Drain beenden. Geben Sie dann den Streaming Engine-Parameter an und führen Sie die Pipeline noch einmal aus.
  • Bei Jobs, die Streaming Engine verwenden, sind die aggregierten Eingabedaten für die offenen Fenster auf 60 GB pro Schlüssel beschränkt. Aggregierte Eingabedaten enthalten sowohl pufferte Elemente als auch benutzerdefinierten Status. Wenn eine Pipeline dieses Limit überschreiten, bleibt die Pipeline mit einer hohen Systemverzögerung hängen, aber es wird kein Fehler in den externen Logdateien angezeigt. Als Best Practice sollten Sie keine Pipelinedesigns vermeiden, die zu großen Schlüsseln führen. Weitere Informationen finden Sie unter Dataflow-Pipelines unter Berücksichtigung der Skalierbarkeit schreiben.
  • Unterstützt vom Kunden verwaltete Verschlüsselungsschlüssel (CMEK)

Streaming Engine verwenden

Diese Funktion ist in allen Regionen verfügbar, in denen Dataflow unterstützt wird. Informationen zu den verfügbaren Speicherorten finden Sie unter Dataflow-Standorte.

Java

Streaming Engine erfordert das Apache Beam Java SDK in der Version 2.10.0 oder höher.

Geben Sie folgenden Parameter an, um Streaming Engine für Ihre Streamingpipelines zu verwenden:

  • --enableStreamingEngine, wenn Sie das Apache Beam SDK for Java ab Version 2.11.0 verwenden.
  • --experiments=enable_streaming_engine, wenn Sie das Apache Beam SDK for Java Version 2.10.0 verwenden.

Wenn Sie Dataflow Streaming Engine in Ihrer Pipeline verwenden, geben Sie nicht den Parameter --zone an. Legen Sie stattdessen den Parameter --region fest und geben Sie als Wert eine unterstützte Region an. Dataflow wählt die Zone in der von Ihnen angegebenen Region automatisch aus. Wenn Sie den Parameter --zone angeben und ihn auf eine Zone außerhalb der verfügbaren Regionen festlegen, meldet Dataflow einen Fehler.

Streaming Engine funktioniert am besten mit kleineren Kern-Worker-Maschinentypen. Ermitteln Sie anhand des Jobtyps, ob ein Worker-Maschinentyp mit großem Speicher verwendet werden soll. Beispiele für Maschinentypen, die wir empfehlen, sind --workerMachineType=n1-standard-2 und --workerMachineType=n1-highmem-2. Sie können auch --diskSizeGb=30 festlegen, da Streaming Engine nur für das Worker-Boot-Image und lokale Logs Speicherplatz benötigt. Diese Werte sind die Standardwerte.

Python

Streaming Engine erfordert das Apache Beam Python SDK in der Version 2.16.0 oder höher.

Streaming Engine ist bei neuen Dataflow-Streamingpipelines standardmäßig aktiviert, wenn die folgenden Bedingungen erfüllt sind:

Ab Python SDK Version 2.45.0 können Sie Streaming Engine für Streamingpipelines nicht deaktivieren. Geben Sie in Python SDK Version 2.44.0 oder früher den folgenden Parameter an, um Streaming Engine zu deaktivieren:

--experiments=disable_streaming_engine

Wenn Sie Python 2 verwenden, geben Sie den folgenden Parameter an, um Streaming Engine zu aktivieren:

--enable_streaming_engine

Wenn Sie Dataflow Streaming Engine in Ihrer Pipeline verwenden, geben Sie nicht den Parameter --zone an. Legen Sie stattdessen den Parameter --region fest und geben Sie als Wert eine unterstützte Region an. Dataflow wählt die Zone in der von Ihnen angegebenen Region automatisch aus. Wenn Sie den Parameter --zone angeben und ihn auf eine Zone außerhalb der verfügbaren Regionen festlegen, meldet Dataflow einen Fehler.

Streaming Engine funktioniert am besten mit kleineren Kern-Worker-Maschinentypen. Ermitteln Sie anhand des Jobtyps, ob ein Worker-Maschinentyp mit großem Speicher verwendet werden soll. Beispiele für Maschinentypen, die wir empfehlen, sind --workerMachineType=n1-standard-2 und --workerMachineType=n1-highmem-2. Sie können auch --disk_size_gb=30 festlegen, da Streaming Engine nur für das Worker-Boot-Image und lokale Logs Speicherplatz benötigt. Diese Werte sind die Standardwerte.

Einfach loslegen (Go)

Streaming Engine erfordert das Apache Beam Go SDK 2.33.0 oder höher.

Streaming Engine ist bei neuen Dataflow-Streamingpipelines, die das Apache Beam Go SDK verwenden, standardmäßig aktiviert.

Wenn Sie Streaming Engine in Ihrer Go-Streamingpipeline deaktivieren möchten, geben Sie den folgenden Parameter an. Dieser Parameter muss jedes Mal angegeben werden, wenn Sie Streaming Engine deaktivieren möchten.

--experiments=disable_streaming_engine

Wenn Sie Dataflow Streaming Engine in Ihrer Pipeline verwenden, geben Sie nicht den Parameter --zone an. Legen Sie stattdessen den Parameter --region fest und geben Sie als Wert eine unterstützte Region an. Dataflow wählt die Zone in der von Ihnen angegebenen Region automatisch aus. Wenn Sie den Parameter --zone angeben und ihn auf eine Zone außerhalb der verfügbaren Regionen festlegen, meldet Dataflow einen Fehler.

Streaming Engine funktioniert am besten mit kleineren Kern-Worker-Maschinentypen. Ermitteln Sie anhand des Jobtyps, ob ein Worker-Maschinentyp mit großem Speicher verwendet werden soll. Beispiele für Maschinentypen, die wir empfehlen, sind --workerMachineType=n1-standard-2 und --workerMachineType=n1-highmem-2. Sie können auch --disk_size_gb=30 festlegen, da Streaming Engine nur für das Worker-Boot-Image und lokale Logs Speicherplatz benötigt. Diese Werte sind die Standardwerte.

gcloud-CLI

Wenn Sie die Pipeline mit dem Befehl gcloud dataflow jobs run oder gcloud dataflow flex-template run ausführen, verwenden Sie das folgende Flag, um Streaming Engine zu aktivieren:

--enable-streaming-engine

Verwenden Sie das folgende Flag, um Streaming Engine zu deaktivieren:

--additional-experiments=disable_streaming_engine

REST

Wenn Sie die Pipeline mit der Methode projects.locations.jobs.create in der REST API ausführen, verwenden Sie die Ressource Job, um Streaming Engine zu aktivieren oder zu deaktivieren. Setzen Sie zum Aktivieren von Streaming Engine unter environment das Feld experiments auf enable_streaming_engine:

"environment": {
          "experiments": "enable_streaming_engine"
      }

Legen Sie unter environment das Feld experiments auf disable_streaming_engine fest, um die Streaming Engine zu deaktivieren:

"environment": {
          "experiments": "disable_streaming_engine"
      }

Preise

Die Dataflow Streaming Engine bietet ein ressourcenbasiertes Abrechnungsmodell, bei dem Ihnen die von Ihrem Job insgesamt verbrauchten Ressourcen in Rechnung gestellt werden. Bei der ressourcenbasierten Abrechnung werden die von Ihrem Job verbrauchten Streaming Engine-Ressourcen in Streaming Engine-Recheneinheiten berechnet und gemessen. Ihnen werden die Worker-CPU, der Worker-Arbeitsspeicher und die Streaming Engine-Recheneinheiten in Rechnung gestellt.

Ressourcenbasierte Abrechnung verwenden

Um die ressourcenbasierte Abrechnung zu verwenden, schließen Sie beim Starten oder Aktualisieren Ihres Jobs die folgende Dataflow-Dienstoption ein.

Java

--dataflowServiceOptions=enable_streaming_engine_resource_based_billing

Python

--dataflow_service_options=enable_streaming_engine_resource_based_billing

Einfach loslegen (Go)

--dataflow_service_options=enable_streaming_engine_resource_based_billing

Abrechnung nach verarbeiteten Daten (veraltet)

Wenn Sie die ressourcenbasierte Abrechnung nicht aktivieren, werden Ihre Jobs über die alte Abrechnung nach verarbeiteten Daten abgerechnet.

Abrechnungsmodell prüfen

Wenn Sie Dataflow Prime nicht verwenden, enthält die Rechnung bei Jobs mit ressourcenbasierter Abrechnung die Artikelnummer Streaming Engine Compute Unit. Wenn Sie Jobs haben, die eine Abrechnung nach verarbeiteten Daten verwenden, enthält die Rechnung die SKU Streaming Engine data processed. Wenn Sie einige Jobs mit ressourcenbasierter Abrechnung und andere Jobs mit Abrechnung nach verarbeiteten Daten haben, enthält die Rechnung beide SKUs.

Wenn Sie Dataflow Prime mit ressourcenbasierter Abrechnung verwenden, wird die SKU Data Compute Unit (DCU) verwendet.

Wählen Sie in der Dataflow-Monitoring-Oberfläche Ihren Job aus, um zu sehen, welches Preismodell Ihr Job verwendet. Wenn Ihr Job die ressourcenbasierte Abrechnung verwendet, enthält die Seitenleiste Jobinformationen das Feld Streaming Engine-Recheneinheiten.

Wenden Sie sich bei Fragen zu Ihrer Abrechnung an Cloud Customer Care.