Dataflow ist ein Google Cloud Dienst, der die einheitliche Verarbeitung großer Stream- und Batchdatenmengen ermöglicht. Mit Dataflow können Sie Datenpipelines erstellen, die aus einer oder mehreren Quellen lesen, sowie die Daten transformieren und in ein Ziel schreiben.
Typische Anwendungsfälle für Dataflow sind:
- Datenverschiebung: Aufnahme oder Replikation von Daten über Subsysteme hinweg.
- ETL-Workflows (Extrahieren, Transformieren, Laden), die Daten in ein Data Warehouse wie BigQuery aufnehmen.
- BI-Dashboards
- ML in Echtzeit auf Streamingdaten anwenden
- Verarbeitung von Sensor- oder Logdaten im großen Maßstab
Dataflow verwendet dasselbe Programmiermodell für Batch- und Streamanalysen. Streamingpipelines können eine sehr niedrige Latenz erreichen. Sie können schwankende Mengen an Echtzeitdaten aufnehmen, verarbeiten und analysieren. Standardmäßig garantiert Dataflow die genau einmalige Verarbeitung jedes Datensatzes. Bei Streamingpipelines, die Duplikate tolerieren können, können Sie häufig die Kosten senken und die Latenz verbessern, indem Sie den „Mindestens einmal“-Modus aktivieren.
Vorteile von Dataflow
In diesem Abschnitt werden einige Vorteile der Verwendung von Dataflow beschrieben.
Verwaltet
Dataflow ist ein vollständig verwalteter Dienst. Das bedeutet, dass Google alle Ressourcen verwaltet, die zum Ausführen von Dataflow erforderlich sind. Wenn Sie einen Dataflow-Job ausführen, weist der Dataflow-Dienst einen Pool von Worker-VMs zur Ausführung der Pipeline zu. Sie müssen diese VMs nicht bereitstellen oder verwalten. Wenn der Job abgeschlossen oder abgebrochen wird, löscht Dataflow die VMs automatisch. Ihnen werden die Rechenressourcen in Rechnung gestellt, die von Ihrem Job verwendet werden. Weitere Informationen zu den Kosten finden Sie unter Dataflow-Preise.
Skalierbar
Dataflow wurde für die Unterstützung von Batch- und Streamingpipelines im großen Maßstab entwickelt. Die Daten werden parallel verarbeitet, sodass die Arbeit auf mehrere VMs verteilt wird.
Dataflow kann automatisch skalieren durch Bereitstellung zusätzlicher Worker-VMs oder durch Herunterfahren einiger Worker-VMs, wenn weniger benötigt werden. Außerdem optimiert es die Arbeit anhand der Eigenschaften der Pipeline. Dataflow kann beispielsweise Arbeitslast dynamisch zwischen den VMs ausbalancieren, sodass parallele Arbeiten effizienter abgeschlossen werden.
Mobil.
Dataflow basiert auf dem Open-Source-Projekt Apache Beam. Mit Apache Beam können Sie Pipelines mit einem sprachspezifischen SDK schreiben. Apache Beam unterstützt Java-, Python- und Go-SDKs sowie mehrsprachige Pipelines.
Dataflow führt Apache Beam-Pipelines aus. Wenn Sie sich später entscheiden, Ihre Pipeline auf einer anderen Plattform wie Apache Flink oder Apache Spark auszuführen, können Sie dies tun, ohne den Pipelinecode neu schreiben zu müssen.
Flexibel
Sie können Dataflow für relativ einfache Pipelines wie das Verschieben von Daten verwenden. Es eignet sich jedoch auch für komplexere Anwendungen wie Streaminganalysen in Echtzeit. Eine auf Dataflow basierende Lösung kann mit Ihren Anforderungen wachsen, wenn Sie von Batch- zu Streaming-Daten wechseln oder komplexere Anwendungsfälle auftreten.
Dataflow unterstützt je nach Ihren Anforderungen verschiedene Möglichkeiten zum Erstellen und Ausführen von Pipelines:
Code mit den Apache Beam SDKs schreiben
Stellen Sie eine Dataflow-Vorlage bereit. Mit Vorlagen können Sie vordefinierte Pipelines ausführen. Beispielsweise kann ein Entwickler eine Vorlage erstellen und ein Data Scientist kann sie dann bei Bedarf bereitstellen.
Google stellt auch eine Bibliothek mit Vorlagen für gängige Szenarien zur Verfügung. Sie können diese Vorlagen bereitstellen, ohne mit Apache Beam-Programmierkonzepten vertraut zu sein.
Verwenden Sie JupyterLab-Notebooks, um Pipelines iterativ zu entwickeln und auszuführen.
Observable
Sie können den Status Ihrer Dataflow-Jobs über die Dataflow-Monitoring-Oberfläche in der Google Cloud -Konsole überwachen. Die Monitoring-Oberfläche enthält eine grafische Darstellung Ihrer Pipeline, in der der Fortschritt und die Ausführungsdetails jeder Pipelinestufe angezeigt werden. Über die Monitoring-Oberfläche lassen sich Probleme wie Engpässe oder hohe Latenz leichter erkennen. Sie können auch Profile für Ihre Dataflow-Jobs erstellen, um die CPU-Auslastung und Arbeitsspeicherzuweisung zu überwachen.
Funktionsweise
Dataflow verwendet ein Datenpipelinemodell, wobei Daten eine Reihe von Phasen durchlaufen. Phasen können das Lesen von Daten aus einer Quelle, das Transformieren und Aggregieren der Daten und das Schreiben der Ergebnisse in ein Ziel umfassen.
Pipelines können von einer sehr einfachen bis hin zu einer komplexeren Verarbeitung reichen. Eine Pipeline kann beispielsweise Folgendes tun:
- Daten unverändert zu einem Ziel verschieben
- Daten so transformieren, dass sie vom Zielsystem besser genutzt werden können.
- Daten für die Analyse aggregieren, verarbeiten und anreichern
- Daten mit anderen Daten zusammenführen
Eine in Apache Beam definierte Pipeline gibt nicht an, wie die Pipeline ausgeführt wird. Das Ausführen der Pipeline ist die Arbeit eines Runner. Der Zweck eines Runners besteht darin, eine Apache Beam-Pipeline auf einer bestimmten Plattform auszuführen. Apache Beam unterstützt mehrere Runner, darunter einen Dataflow-Runner.
Wenn Sie Dataflow mit Ihren Apache Beam-Pipelines verwenden möchten, geben Sie den Dataflow-Runner an. Der Runner lädt Ihren ausführbaren Code und die Abhängigkeiten in einen Cloud Storage-Bucket hoch und erstellt einen Dataflow-Job. Dataflow weist dann einen Pool von VMs zu, um die Pipeline auszuführen.
Das folgende Diagramm zeigt eine typische ETL- und BI-Lösung mit Dataflow und anderen Google Cloud -Diensten:
Dieses Diagramm zeigt die folgenden Phasen:
- Pub/Sub nimmt Daten aus einem externen System auf.
- Dataflow liest die Daten aus Pub/Sub und schreibt sie in BigQuery. In dieser Phase werden die Daten möglicherweise von Dataflow transformiert oder aggregiert.
- BigQuery dient als Data Warehouse, sodass Datenanalysten Ad-hoc-Abfragen für die Daten ausführen können.
- Looker bietet BI-Einblicke in Echtzeit aus den in BigQuery gespeicherten Daten.
Für einfache Szenarien zur Datenübertragung können Sie eine von Google bereitgestellte Vorlage verwenden. Einige Vorlagen unterstützen benutzerdefinierte Funktionen (User-Defined Functions, UDFs), die in JavaScript geschrieben sind. Mit UDFs können Sie einer Vorlage benutzerdefinierte Verarbeitungslogik hinzufügen. Für komplexere Pipelines sollten Sie mit dem Apache Beam SDK beginnen.
Nächste Schritte
- Weitere Informationen zu Apache Beam finden Sie unter Programmiermodell für Apache Beam.
- Erstellen Sie Ihre erste Pipeline, indem Sie der Kurzanleitung für den Job Builder oder der Kurzanleitung für Dataflow-Vorlagen folgen.
- Apache Beam zum Erstellen von Pipelines verwenden