Wird „Data Pipelining“ ETL 2.0?

Bei Data Engineering Aufgabenstellungen geht es meist darum Daten zu transformieren und im Zuge dieser Transformationsschritte von Quelle A nach Ziel B zu bringen. Diese Abfolge von Schritten bezeichnet man auch gerne als Data Pipelining. In jüngster Zeit fällt auch mehr und mehr der Begriff Data Operations (Data-Ops – vgl. Dev-Ops), wo die Automatisierung dieser Data Pipelines ein ganz wichtiges Thema ist.

 

Data Pipelines verwendet man schon lange bei der ETL-Verarbeitung im DWH-Umfeld. Meist ist diese ETL-Steuerung im jeweiligen Tool (z. B. Oracle Data-Integrator oder Microsoft Integration-Services) integriert (zumindest teilweise). Oft hat man zusätzlich manuell erstellte Programme, um spezielle Abläufe zu steuern. D. h. diese ETL-Steuerungen sind für Workflows bei der DWH-Beladung konzipiert und meist nicht flexibel genug für allgemeine Aufgabenstellungen.

Nachdem allgemeine Data Pipelines immer öfter benötigt werden, sehen wir bei Kunden oft folgende Situation:

  • Das ETL-Tool zur DWH-Beladung wird auch für allgemeine Data Pipelines „missbraucht“.
  • Es gibt Data Pipelines (oft auch ad hoc erstellt) mit unterschiedlichsten Tools, aber es fehlt die gemeinsame Orchestrierung.
  • Als Schlussfolgerung tut man sich schwer den Überblick zu behalten.

Mit Apache Airflow (https://airflow.apache.org/) ist jetzt ein Werkzeug verfügbar, um Data Pipelines aufzubauen und zu automatisieren. Apache Airflow hat folgende wesentlichen Eigenschaften:

  • Die Einzelschritte werden als Python-Scripts definiert. Dabei geht es nicht um die Implementierung! Python dient nur zur Konfiguration. (Das ist Schritt 1. Das ist Schritt 2. Das sind die Abhängigkeiten. Die Implementierung von Schritt 1 und Schritt 2 erfolgt völlig unabhängig.)
  • Die Abhängigkeiten zwischen Teilschritten werden als gerichteter azyklischer Graph (DAG) dargestellt. (Man modelliert die Abhängigkeiten in der Konfiguration. z. B. Schritt 1 << Schritt 2 … Schritt 1 hängt von Schritt 2 ab).
  • Anhand des DAG ermittelt Apache Airflow wie die Teilschritte mit den vorhandenen Ressourcen optimal parallelisiert werden können und kümmert sich auch darum, dass die Ausführungen entsprechend passieren.
  • Das Management der Data Pipelines erfolgt über eine Web-GUI (inkl. graphischer Darstellung der DAGs, aktueller Status, Logs, Alerting, Möglichkeiten zur interaktiven Analyse von Verarbeitungsdetails, …).
  • Apache Airflow kann im Cluster betrieben werden und kann selbst eine beliebige Anzahl „worker-Knoten“ managen, um die Data Pipelines zu betreiben. (Auf diesen Maschinen werden dann die einzelnen Schritte der Data Pipelines ausgeführt.)

 

Apache Airflow hat also 3 wesentliche Aspekte:

  1. Konfiguration per Python-Scripts
  2. Management und Monitoring per Web-GUI
  3. Skalierung per Cluster und Worker-Nodes

Warum ist das so interessant?

Punkt 2 und 3 sind naheliegend nützlich. Mit Punkt 1 (Konfiguration per Scripting) ergeben sich aber fast grenzenlose Möglichkeiten um Data Pipelinesaufzubauen. Mit etwas Übung wird man schnell feststellen, dass diese Art der Konfiguration extrem effizient und automatisierbar (Code-Generierung) ist.

 

Q & A

Wahrscheinlich haben Sie spätestens jetzt bereits einige Fragen.
Vielleicht kann ich ein paar davon gleich beantworten.

  1. Soll ich jetzt meine ETL-Workflows auf Apache Airflow umstellen?

Nein – zumindest nicht kurzfristig. Aber je nachdem wie die Situation bei Ihnen ist, kann man mit Apache Airflow mal mit „aufräumen“ beginnen. Konkrete Schritte könnten sein:

  • Alle allgemeinen Data Pipelines Zug um Zug mit Apache Airflow konsolidieren.
  • DWH-fremde Data Pipelines vom ETL-Tool auf Apache Airflow transferieren.

Mittelfristig kann es auch Sinn machen die bestehenden ETL-Pipelines zum DWH auf Apache Airflow zu migrieren. Das wird von der jeweiligen Situation abhängen und sollte jedenfalls als separates Thema behandelt werden.

 

  1. Wo liegt der Nutzen?

Bei der Konsolidierung mit Apache Airflow, kann man mit 3 Effekten rechnen:

  • Bessere Ausnutzung der Computer-Ressourcen (Airflow parallelisiert; Es wird mit dezidierten Worker-Knoten gearbeitet, statt mit vielen einzelnen VMs die im Laufe der Zeit dazu gekommen sind.)
  • Bessere Laufzeiten (Apache Airflow kümmert sich um die parallele Verarbeitung und liefert oft viel bessere Ergebnisse als manuell eingetaktete Workflows.)
  • Bessere Übersicht/Dokumentation (Zentrale Management-GUI, Konfiguration liegt in Git).

Als Konsequenz reduziert sich damit auch der Aufwand für den Betrieb der Data Pipelines.

 

  1. Wie aufwendig ist das?

Man muss sich – wie bei anderen Tools auch – natürlich einarbeiten. Aber es geht nicht darum die Verarbeitungsschritte der Data Pipelines neu zu implementieren. Man muss nur die Konfiguration neu erstellen (mittels Python-Scripts). Ein POC empfiehlt sich immer. So kann man danach entscheiden, ob Apache Airflow für die eigenen Anforderungen wirklich passt. Bei großen Setups wird man im Anschluss noch Zeit für Vorbereitungen benötigen (z. B. Infrastruktur für Airflow, Python Konfig-Templates, …).

 

  1. Gibt es weitere Kosten?

Nein, Apache Airflow ist eine Open Source Lösung der Apache Foundation. Es könnte sogar der Fall eintreten, dass Lizenzkosten entfallen, wenn man „DWH-fremde“ Data Pipelines von den ETL-Tools wegnimmt. (ETL-Werkzeuge werden oft nach Anzahl der Quell-/Zielsysteme lizenziert.)

Wie immer: Ziemlich technisch!

Obwohl dieser Artikel gar nicht auf technische Details von Apache Airflow eingeht. Er soll nur ein paar Konzepte verdeutlichen und Denkanstöße liefern, falls Data Pipelining auch bei Ihnen mehr und mehr ein Thema wird.

Falls Sie Interesse haben, können wir dieses Thema natürlich auch gerne persönlich diskutieren.

 

DI Kurt Rahstorfer
Ihr Ansprechpartner für Data Management

Kurt Rahstorfer | Geschäftsführer | M +43 660 8295218