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 Version 2.21.0 oder höher und Python 3 verwenden.
- Streamingpipelines, die das Apache Beam Go SDK in der Version 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
stattn1-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 benötigt Streaming Engine das Apache Beam SDK in der Version 2.10.0 oder höher.
- Für das Python SDK benötigt Streaming Engine das Apache Beam SDK in der Version 2.16.0 oder höher.
- Für das Go SDK ist die Apache Beam SDK-Version 2.33.0 oder höher erforderlich.
- 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 "Drain". 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 gepufferte Elemente als auch benutzerdefinierten Status. Wenn eine Pipeline dieses Limit überschreiten, bleibt die Pipeline mit einer hohen Systemverzögerung hängen und eine Meldung im Joblog zeigt an, dass das Limit überschritten wurde. 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
Für Streaming Engine ist das Apache Beam Java SDK ab Version 2.10.0 erforderlich.
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:
- Pipelines verwenden das Apache Beam Python SDK Version 2.21.0 oder höher und Python 3.
- Es werden keine vom Kunden verwalteten Verschlüsselungsschlüssel verwendet.
- Die Dataflow-Worker befinden sich in derselben Region wie Ihr Dataflow-Job.
In Python SDK Version 2.45.0 oder höher können Sie Streaming Engine nicht für Streamingpipelines 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.
Go
Für Streaming Engine ist das Apache Beam Go SDK in der Version 2.33.0 oder höher erforderlich.
Die 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. Legen Sie unter environment
das Feld experiments
auf enable_streaming_engine
fest, um die Streaming Engine zu aktivieren:
"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 Rechnung gestellt und in Streaming Engine-Recheneinheiten gemessen. Ihnen werden die Worker-CPU, der Worker-Arbeitsspeicher und die Streaming Engine-Recheneinheiten in Rechnung gestellt.
Ressourcenbasierte Abrechnung verwenden
Geben Sie zur Verwendung der ressourcenbasierten Abrechnung beim Starten oder Aktualisieren des Jobs die folgende Dataflow-Dienstoption an.
Java
--dataflowServiceOptions=enable_streaming_engine_resource_based_billing
Python
--dataflow_service_options=enable_streaming_engine_resource_based_billing
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 ressourcenbasierte Abrechnung verwendet, enthält die Seitenleiste Jobdetails das Feld Streaming Engine-Recheneinheiten.
Bei Fragen zu Ihrer Abrechnung wenden Sie sich an Cloud Customer Care.