Dataflow – Übersicht

Dataflow ist ein Google Cloud-Dienst, der eine einheitliche Stream- und Batchdatenverarbeitung in großem Maßstab 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 betreiben.
  • Anwenden von ML in Echtzeit auf Streamingdaten
  • Sensordaten oder Logdaten in großem Umfang verarbeiten.

Dataflow verwendet für Batch- und Streamanalysen dasselbe Programmiermodell. 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. Für Streamingpipelines, die Duplikate tolerieren, 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 zum Ausführen 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 wurde, löscht Dataflow die VMs automatisch. Ihnen werden die Rechenressourcen in Rechnung gestellt, die Ihr Job verwendet. Weitere Informationen zu Kosten finden Sie unter Dataflow – Preise.

Skalierbar

Dataflow unterstützt Batch- und Streamingpipelines im großen Maßstab. Die Daten werden parallel verarbeitet, sodass die Arbeit auf mehrere VMs verteilt ist.

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 mithilfe eines sprachspezifischen SDK schreiben. Apache Beam unterstützt Java-, Python- und Go-SDKs sowie mehrsprachige Pipelines.

Dataflow führt Apache Beam-Pipelines aus. Wenn Sie Ihre Pipeline später auf einer anderen Plattform wie Apache Flink oder Apache Spark ausführen möchten, 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 wechseln oder komplexere Anwendungsfälle finden.

Dataflow unterstützt je nach Ihren Anforderungen verschiedene Möglichkeiten zum Erstellen und Ausführen von Pipelines:

  • Code mit den Apache Beam SDKs schreiben.

  • Eine Dataflow-Vorlage bereitstellen Mit Vorlagen können Sie vordefinierte Pipelines ausführen. Beispielsweise kann ein Entwickler eine Vorlage erstellen und sie kann dann von einem Data Scientist nach Bedarf bereitgestellt werden.

    Google bietet außerdem eine Bibliothek mit Vorlagen für gängige Szenarien. Sie können diese Vorlagen bereitstellen, ohne dass Sie mit den Apache Beam-Programmierkonzepten vertraut sind.

  • 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 der Pipeline, in der der Fortschritt und die Ausführungsdetails jeder Pipelinephase angezeigt werden. Die Monitoring-Oberfläche erleichtert das Erkennen von Problemen wie Engpässen oder hoher Latenz. Sie können auch ein Profil für Ihre Dataflow-Jobs erstellen, 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 transformieren, damit sie vom Zielsystem verwendet 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 ist die Ausführung einer Apache Beam-Pipeline auf einer bestimmten Plattform. Apache Beam unterstützt mehrere Runner, einschließlich eines Dataflow-Runners.

Geben Sie den Dataflow-Runner an, um Dataflow mit Ihren Apache Beam-Pipelines zu verwenden. 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 kann Dataflow die Daten transformieren oder aggregieren.
  3. BigQuery fungiert als Data Warehouse, sodass Datenanalysten Ad-hoc-Abfragen der Daten ausführen können.
  4. Looker bietet BI-Statistiken in Echtzeit aus den in BigQuery gespeicherten Daten.

Bei grundlegenden Datenbewegungsszenarien können Sie eine von Google bereitgestellte Vorlage ausführen. Einige Vorlagen unterstützen benutzerdefinierte Funktionen (User-Defined Functions, UDFs), die in JavaScript geschrieben sind. Mit UDFs können Sie einer Vorlage eine benutzerdefinierte Verarbeitungslogik hinzufügen. Bei komplexeren Pipelines beginnen Sie mit dem Apache Beam SDK.

Nächste Schritte