NextLytics Blog

Apache Airflow ETL - Lassen Sie sich von den Möglichkeiten inspirieren

Geschrieben von Luise Wiesalla | 23.03.2021 14:53:53

Mit Apache Airflow ETL Workflows ausführen bedeutet, auf ein State-Of-The-Art-Workflowmanagement zu setzen. Dabei werden wiederkehrende Prozesse orchestriert, die Ihre Daten organisieren, verwalten und zwischen Systemen verschieben. 

Die Workflowmanagement-Plattform ist unter der Apache License kostenlos nutzbar und individuell erweiterbar. Selbst in der Installation ohne PlugIns steckt viel Potential. Lassen Sie sich in diesem Artikel von den Möglichkeiten inspirieren!

Beispielhafter ETL-Workflow mit den Schritten Extrahieren, Aggregieren Transformieren, Laden in Airflow

Apache Airflow

Zunächst möchten wir Ihnen Apache Airflow vorstellen. Das Top-Level-Projekt der Apache Software Foundation begeistert inzwischen schon viele Unternehmen. Durch die extrem skalierbare Lösung ist die Plattform für jede Unternehmensgröße vom Startup bis zum Großkonzern geeignet.

Mit einfachen Python-Codes werden Workflows definiert, geplant und ausgeführt. Selbst komplexe Datenpipelines mit zahlreichen internen Abhängigkeiten zwischen den einzelnen Aufgaben im Workflow sind schnell und robust definiert. Da die Herausforderungen des Data Engineerings hier nicht enden, bringt Airflow ein reiches Kommandozeilen-Interface, eine umfangreiche Weboberfläche und - seit dem neuen Major-Release Apache-Airflow 2.0 - auch eine ausgebaute REST-API mit. Es sind zahlreiche Funktionen verfügbar, die das Monitoring und die Fehlersuche deutlich vereinfachen. Je nach Bedürfnissen lässt sich Airflow mit zahlreichen PlugIns, Makros und benutzerdefinierten Klassen erweitern.

Der Status der Läufe eines Workflows und die zugehörigen Log-Files sind nur einen Klick entfernt. Über die Hauptansicht sind wichtige Metadaten, wie das Intervall und der Zeitpunkt des letzten Laufs, sichtbar. Während Apache Airflow ETL Workflows selbständig ausführt, sind Sie so bestens über den aktuellen Status informiert. Dennoch ist der Blick in die Weboberfläche nicht zwingend notwendig, da Airflow im Falle eines Fehlversuches optional eine Benachrichtigung über E-Mail oder Slack lossendet.

Das Anwendungsspektrum konzentriert sich dabei auf den ETL Bereich, wobei Apache Airflow Machine Learning Workflows ebenfalls optimal orchestriert.

Weboberfläche Apache Airflow. Der Status der Workflowläufe ist links sichtbar (DAG Runs).
Die Status der Aufgaben des letzten Workflows sind rechts zu sehen (Recent Tasks)
Im zweiten Workflow (example_complex) ist das Kontextmenü aktiviert.

Um einen besseren Überblick über die möglichen Anwendungsfälle von Apache Airflow zu bekommen, haben wir an dieser Stelle verschiedenste Use-Cases für Sie zusammengefasst. Neben klassischen Anwendungsideen finden Sie hier Inspiration wie Sie Ihre Datenpipelines mit State-of-the-Art-Features bereichern können.

  • Klassisch
  • Ambitioniert
  • (Un)möglich


Klassisch

In den klassischen Anwendungsfällen liegt die Grundidee von Workflowmanagement-Systemen begraben: Aufgaben - insbesondere im ETL Bereich - sollen zuverlässig und termingerecht ausgeführt werden. Dabei sollen externe und interne Abhängigkeiten vor dem Start einer Aufgabe beachtet werden.
Eine externe Abhängigkeit ist beispielsweise eine zu verarbeitende Datei, die vom Fachbereich bereitgestellt wird. Ist diese noch nicht vorhanden, kann die Verarbeitung nicht beginnen. Die internen Abhängigkeiten beschreiben die bedingte Reihenfolge der Aufgaben untereinander.

  • Cron Alternative

Sobald Aufgaben wie das Bereinigen einer Datenbank, der Newsletterversand oder die Auswertung von Log-Files regelmäßig ausgeführt werden sollen, kommen häufig Cronjobs zum Einsatz. Werden diese Aufgaben stattdessen in Airflow übernommen, behält man trotz der vielen Aufgaben die Übersicht und profitiert von der Nachverfolgbarkeit der Statusinformationen.

  • Bedingte, modulare Workflows

Mit Airflow sind komplizierte Abhängigkeiten leicht realisiert. Durch integrierte Konzepte wie das Branching und TaskGroups lassen sich komplexe Workflows wartungsfreundlich anlegen. Mit Branching wird ein bedingtes Ausführen mehrerer Alternativen ermöglicht und durch die Verwendung von TaskGroups sind kleinere Teile des Workflows wiederverwendbar.

Beispielhafter Use-Case für Branching in Airflow. Abhängig des Tages (Werktag, Feiertag, Wochenende) sollen unterschiedliche Reports erstellt werden.

  • Verarbeitung von Daten direkt nach der Erzeugung

Wenn mehrere Systeme zusammenarbeiten, entstehen oft Wartesituationen. Beispielsweise soll ein Bash Job direkt nach Ablage einer Datei gestartet werden. Der genaue Abgabezeitpunkt ist jedoch unbekannt. Mit der Aufgabenklasse der Sensoren pausiert Airflow den Workflow solange, bis diese Datei existiert. Das selbe Prinzip kann ebenfalls bei tagesaktuellen Tabellen oder Views in einer Datenbank angewendet werden.

Optimieren Sie Ihr Workflowmanagement
mit Apache Airflow


Ambitioniert

Je mehr Workflows auf Airflow laufen, umso schneller entstehen Ideen für besondere Anwendungsszenarien. Als erfahrener Nutzer möchten Sie über die Apache Airflow Best Practices hinaus und die Möglichkeiten vollumfänglich ausschöpfen. Einige fortgeschrittene Use-Cases benötigen lediglich eine Anpassung der Konfigurationsdatei. Andere werden mit benutzerdefinierten Plugins und Aufgabentypen (Operatoren) oder Makros realisiert. Insgesamt gibt es viele Möglichkeiten Airflow an die aufkommenden Bedürfnisse anzupassen.

  • Flexible Workflows

Obwohl viele Aspekte des Workflows in den Python-Files vorher festgelegt werden, kann in einigen Bereichen eine gewisse Flexibilität eingebaut werden. Während der Laufzeit sind Kontext-Variablen wie zum Beispiel das Ausführungsdatum verfügbar. Dieses kann beispielsweise in SQL-Anweisungen genutzt werden. Über das CLI oder die Web-GUI ist das Anlegen von weiteren (verschlüsselten) Variablen möglich. Hiermit werden beispielsweise Dateipfade für einen Upload flexibel gehalten. Nicht zuletzt kann selbst die Workflowstruktur an sich dynamisch gehalten werden. Die Anzahl an Task-Instanzen, beispielsweise für eine veränderliche Anzahl an Einträgen einer Datenbank, kann über Variablen gesetzt werden. In der Grafik sind die Komponenten dynamic_component_# über eine Variable erstellt.

Erzeugung von dynamischen Komponenten mit Airflow

  • Big Data - horizontal skalieren mit Airflow

Horizontal skaliert kann Airflow bis zu 10.000 automatisierte Aufgaben pro Tag abarbeiten. Dabei fließen mehrere Terabytes täglich durch die Datenpipelines. So werden beispielsweise Spark Transformationen und Datenabzüge aus dem Data Warehouse von Airflow im Big Data Bereich gemanagt. Mit Airflow werden Fehler bei der Ausführung und Inkonsistenzen sicher erkannt und eine Reaktion ist schnellstmöglich realisierbar.
Ändert sich beispielsweise unangekündigt ein Datenschema oder ist das Datenaufkommen aufgrund besonderer Umstände erhöht, wird das Resultat im Monitoring sichtbar und eine Benachrichtigung der zuständigen Personen kann automatisiert erfolgen.

  • REST API

Als besonderes Feature beinhaltet Airflow eine umfangreiche REST API. Diese kann genutzt werden, um Statusinformationen über die Workflowläufe zu erhalten, Workflows zu pausieren oder zu starten und Variablen und Verbindungsinformationen im Backend zu hinterlegen. Bei der Aktivierung eines Workflows per Schnittstelle können optional Kontext-Variablen übergeben werden. Eine Authentifizierung sorgt hier für die Sicherheit. Über die REST API ist somit auch eine Verknüpfung von Airflow in das SAP BW denkbar.

(Un)möglich

Um abzuschätzen, welche Anwendungsideen möglich sind und welche nicht, sollten auch die Grenzen von Airflow betrachtet werden. Im Kern ist Airflow ein großangelegter Batch-Scheduler, der hauptsächlich zu Orchestrierung von Drittsystemen benutzt wird. In der Grundidee sind die Workflows hierbei statisch. Folgende Funktionen werden deshalb nur über Umwege realisiert:

  • Workflows ohne festen Zeitplan

Das Ausführen eines Workflows zu mehreren willkürlichen Terminen kann nicht ohne Weiteres in Gang gesetzt werden. Die Weboberfläche und das CLI bieten hierfür keine Funktion. Auswege bieten die REST API oder das manuelle Starten zum gewünschten Zeitpunkt über die Weboberfläche.

  • Datenaustausch zwischen den Workflows

Eine der Hauptanwendungen ist die Gestaltung von Datenpipelines. Ironischerweise werden diese nicht nativ durch Airflow unterstützt, da keine Daten zwischen den Aufgaben weitergegeben werden. Mit XCOM sind zumindest Metadaten zwischen den Aufgaben austauschbar. Hierbei kann beispielsweise der Speicherort von Daten in der Cloud an einen folgenden Task weitergegeben werden. Die maximale Größe der Metadaten ist dabei an die Größe eines BINARY LARGE OBJECTs (BLOB) in der Metadaten-Datenbank beschränkt.

Die genannten Punkte sind oft Gründe für benutzerdefinierte PlugIns und Makros, um die Funktionalität von Airflow zu erweitern. Bis dato erweist sich Airflow jedoch als eine verlässliche und gut durchdachte Workflow-Management-Plattform, die viele Herausforderungen des modernen Data Engineerings löst. Verknüpft mit Anaconda Environments eignet sich Airflow auch hervorragend zum Training von Machine Learning Modellen.

Für mehr Informationen zu Airflow und den Neuerungen in Apache Airflow 2.0 werfen Sie einen Blick in unser Whitepaper.
Wenn Sie Unterstützung in der Realisierung Ihrer Anwendungsideen benötigen, zögern Sie nicht uns zu kontaktieren. Wir bereichern Ihr Projekt gerne mit umfangreicher Praxiserfahrung.