Dataflow – Übersicht

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
  • Sensor- oder Protokolldaten im großen Maßstab verarbeiten

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 Streaming-Pipelines, 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 von Dataflow beschrieben.

Verwaltet

Dataflow ist ein vollständig verwalteter Dienst. Das bedeutet, dass Google alle Ressourcen verwaltet, die für die Ausführung von Dataflow erforderlich sind. Wenn Sie einen Dataflow-Job ausführen, weist der Dataflow-Dienst einen Pool von Worker-VMs zu, um die Pipeline auszuführen. Sie müssen diese VMs nicht bereitstellen oder verwalten. Wenn der Job abgeschlossen oder abgebrochen wird, werden die VMs von Dataflow automatisch gelöscht. Ihnen werden die Rechenressourcen in Rechnung gestellt, die Ihr Job nutzt. Weitere Informationen zu den Kosten finden Sie unter Dataflow-Preise.

Skalierbar

Dataflow wurde entwickelt, um Batch- und Streamingpipelines im großen Maßstab zu unterstützen. 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.

In Dataflow werden Apache Beam-Pipelines ausgeführt. Wenn Sie später entscheiden, Ihre Pipeline auf einer anderen Plattform auszuführen, z. B. auf Apache Flink oder Apache Spark, können Sie dies tun, ohne den Pipelinecode neu zu schreiben.

Flexibel

Sie können Dataflow für relativ einfache Pipelines verwenden, z. B. für die Übertragung von Daten. 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 angehen.

Dataflow unterstützt je nach Bedarf 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 diese dann bei Bedarf bereitstellen.

    Google stellt außerdem eine Bibliothek mit Vorlagen für gängige Szenarien bereit. 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 Console überwachen. Die Monitoring-Oberfläche enthält eine grafische Darstellung Ihrer Pipeline mit dem Fortschritt und den Ausführungsdetails der einzelnen Pipelinephasen. Über die Monitoring-Oberfläche lassen sich Probleme wie Engpässe oder hohe Latenz leichter erkennen. Sie können Ihre Dataflow-Jobs auch profilieren, um die CPU-Auslastung und die 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 für das Zielsystem besser nutzbar sind.
  • 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 Ausführprogramme, 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 den 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:

Diagramm einer ETL- und BI-Lösung, die Dataflow verwendet

Dieses Diagramm zeigt die folgenden Phasen:

  1. Pub/Sub nimmt Daten aus einem externen System auf.
  2. Dataflow liest die Daten aus Pub/Sub und schreibt sie in BigQuery. In dieser Phase werden die Daten möglicherweise in Dataflow transformiert oder aggregiert.
  3. BigQuery dient als Data Warehouse, mit dem Datenanalysten Ad-hoc-Abfragen auf die Daten ausführen können.
  4. Looker bietet BI-Erkenntnisse 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