Apache Airflow ist eine Open-Source Plattform für das Management von Workflows in der Datenverarbeitung und bei DevOps-Automatisierungen. Mithilfe von sogenannten gerichteten, azyklischen Graphen können Abläufe nicht nur visualisiert sondern auch optimiert werden.
Was ist Apache Airflow?
Apache Airflow wurde ursprünglich von AirBnb entwickelt, als diese während ihrer Anfänge ein rasantes Wachstum hinlegten und mit der Masse an Daten überfordert waren. Durch die Anstellung von Data Engineers und Data Scientist konnte das Datenwachstum in den Griff bekommen werden. Zur Koordinierung der Mitarbeiter und deren Tätigkeiten wurde dann ein Tool zum Workflow-Management entwickelt.
Dieses wurde im Jahr 2016 von der Apache Foundation aufgenommen und ist seitdem unter dem Namen Apache Airflow open-source verfügbar. Das Programm wurde ursprünglich in Python geschrieben und besitzt ein übersichtliches Frontend mit dem die Anwender, die einzelnen Datajobs überwachen und koordinieren können.
Wie funktioniert Apache Airflow?
Mithilfe von Apache Airflow lassen sich die Abläufe von Datenpipelines, also ETL Abläufe, programmatisch starten, planen und überwachen. Um die Funktionsweise besser verstehen zu können, werfen wir einen genaueren Blick auf die Komponenten, die in diesen Prozess involviert sind:
Directed Acyclic Graph (DAG)
Jeder Workflow wird in Airflow als gerichteter, azyklischer Graph dargestellt. Gerichtet bedeutet, dass die Daten nur in eine Richtung laufen und es eine feste, zeitliche Vorgabe der Abarbeitung gibt. Der Graph ist azyklisch, wenn keine Schleifen vorkommen dürfen, also keine Tasks mehrmals durchlaufen werden. Innerhalb des Graphs sind wiederum die Tasks definiert, also kleine Arbeitspakete, die definieren welche Operationen ausgeführt werden sollen. Dabei kann es sich beispielsweise um Extraktionen aus einer Datenquelle handeln oder die Aufbereitung von Daten.
In Airflow werden drei Arten von Tasks unterschieden:
- Operators: Das sind bereits vordefinierte Tasks in Airflow, die per Drag-and-Drop genutzt werden können und einfach zu einem funktionierenden DAG zusammengesetzt werden können.
- Sensors: Sensor-Tasks gehöhren auch zu den Operators führen aber selbst keine Aufgabe durch, sondern warten lediglich auf ein externes Event und starten einen Trigger, sobald das Event gestartet ist.
- TaskFlow: Hiermit können eigene Funktionen in Python geschrieben werden, die über die Funktionalitäten der Operators hinausgehen wenn nötig.
Scheduler
Wenn ein Workflow definiert wurde, wird er an den Scheduler übergeben. Dieser überwacht alle übergebenen Tasks und startet den DAG sobald die angegebene Dependency eintritt. Als Trigger werden meistens Zeitangaben genutzt, die entweder ein konkretes Datum sein können oder relativ an andere Workflows gekoppelt sein können und starten, sobald andere Workflows fertig sind.
Executor
Der Scheduler ruft den Executer, sobald der Trigger für einen Workflow eintritt. Dadurch muss auch kein separater Executer Prozess gerufen werden, denn dieser läuft schon automatisch im Scheduler. Auf Wunsch können auch eigene Executor geschrieben werden und in der Konfigurationsdatei hinterlegt werden.
Zusätzlich unterscheidet man zwei verschiedene Arten von Executors. Im Default nutzt der Scheduler einen lokalen Executor, der die Aufgaben lokal auf einer einzigen Maschine ausführt. Wenn diese Rechenleistung nicht ausreichen sollte, können auch sogenannte Remote Executors genutzt werden, die sich auf mehrere Worker verteilen lassen.
User Interface
Diese beschriebenen Prozesse in Apache Airflow können entweder im Code definiert und gerufen werden oder über ein User Interface ohne Code bedient werden. Wenn Airflow gestartet wird, wird auch automatisch ein Webserver aufgebaut, über den dieses Frontend abrufbar ist.
Im Frontend können alle Workflows und deren Status auf einen Blick erfasst, gestartet oder beendet werden. Darüber hinaus können auch einzelne Arbeitsabläufe im Detail untersucht werden, um beispielsweise mögliche Probleme zu erkennen.
Welchen Prinzipien folgt die Apache Airflow Architektur?
Die beschriebenen Komponenten haben insgesamt vier Prinzipien, die vorgeben, wie sie miteinander zusammenarbeiten.
- Dynamisch: Die Workflows in Apache Airflow können mithilfe von Python dynamisch geändert und auch gestartet werden.
- Erweiterbar: Die verschiedenen Komponenten, wie Scheduler oder Executor, können nach Belieben individualisiert werden und für spezielle Anwendungen einfach erweitert werden.
- Elegant: Die Workflows werden so schlank wie möglich gehalten und bestehende Pipelines können über Änderung von Parametern sehr einfach vervielfacht werden.
- Skalierbar: Obwohl die Basisinstallation nur lokal läuft, kann die Architektur von Apache Airflow auch auf mehrere Worker verteilt werden und ist dadurch sehr einfach horizontal skalierbar.
In welchen Anwendungen kann man Airflow nutzen?
Apache Airflow wird bereits in vielen großen Unternehmen, wie PayPal, Adobe oder Google, eingesetzt und dient dort als Monitoring Werkzeug für Datenpipelines. Zu den häufigsten Anwendungsfällen zählen sogenannte ETL (Extract-Transform-Load) Pipelines, bei denen Daten aus verschiedenen Datenquellen abgezogen, in ein einheitliches Schema gebracht und dann schließlich in eine andere Datenbank, beispielsweise ein Data Warehouse, gespeichert werden.
Für diese Anwendungen wird Apache Airflow deshalb so gerne genutzt, da es die Möglichkeit bietet auch eine komplexe Ansammlung solcher Pipelines einfach zu managen. Dazu gehört beispielsweise die Option, den Start einer Pipeline an die Fertigstellung vorheriger Workflows zu knüpfen.
Welche Vorteile hat die Nutzung von Airflow?
Das Programm Apache Airflow kann für die verschiedensten Anwendungen genutzt werden. Es hat sich in den letzten Jahren auch aufgrund der folgenden Vorteile zu einem Standard bei der Datenverarbeitung entwickelt:
- Flexibilität: Das Programm basiert auf Python und somit sind auch alle Funktionalitäten, die sich mithilfe von Python umsetzen lassen, in Airflow integrierbar. Dadurch lässt sich Airflow auf die verschiedensten Anwendungen und Gegebenheiten individualisieren.
- Erweiterbarkeit: Über die Jahre haben sich bereits einige Plugins entwickelt, die ohne weiteres nutzbar sind und beispielsweise eine Verbindung zu Cloud-Anbietern wie Amazon Web Services oder Microsoft Azure herstellen können.
- Vereinfachung von komplexen Workflows: Durch die Visualisierung in einem User Interface lässt sich leicht der Überblick über die laufenden Pipelines behalten und auch die Komplexität reduzieren.
- Kostenlose Nutzung: Durch die Aufnahme in die Apache Foundation ist Airflow mittlerweile als Open-Source Programm verfügbar und kann dadurch kostenlos genutzt werden. Zusätzlich lässt sich das Programm dadurch auch einfach erweitern.
- Community: Die Verbreitung von Airflow ist relativ groß, wodurch es eine Menge von Anwendern gibt, die Probleme und deren Lösung miteinander teilen und sich gegenseitig helfen. Dieser Wissensstand ist öffentlich zugänglich und kann in Foren oder ähnlichem abgegriffen und genutzt werden.
- Unbegrenzte Möglichkeiten: Obwohl das Programm ursprünglich für Datenverarbeitungspipelines gedacht war, lässt es sich durch das Python-Interface unbegrenzt erweitern und kann dadurch auch beispielsweise für Machine Learning Pipelines genutzt werden.
Wie installiert man Airflow in Python?
Apache Airflow kann wie gewohnt mithilfe von “pip” in Python installiert werden. Zusätzlich zu dem normalen pip-Befehl muss noch ein sogenanntes Constraint-File definiert werden. Dieses wird benötigt, da Airflow nicht nur eine Library ist sondern auch eine Applikation. In diesem File werden die Abhängigkeiten zu anderen Modulen festgehalten, damit Airflow einwandfrei funktionieren kann.
!pip install "apache-airflow[celery]==2.3.4" --constraint "https://raw.githubusercontent.com/apache/airflow/constraints-2.3.4/constraints-3.7.txt"
In manchen Fällen funktioniert zwar der reine pip-Befehl auch zur Installation, jedoch kann es ohne die Constraint-Datei vereinzelt zu Problemen kommen. Deshalb ist es einfacher das Constraint-File von Anfang an anzugeben.
Wie funktioniert die Integration von Apache Airflow?
Die Integration und das Ökosystem von Apache Airflow sind einige seiner wichtigsten Stärken. Apache Airflow ist so konzipiert, dass es erweiterbar ist, d. h. es lässt sich problemlos in eine Vielzahl von Datenquellen, Zielen und Tools von Drittanbietern integrieren. Dies ermöglicht es Dateningenieuren und Datenwissenschaftlern, komplexe Workflows zu erstellen, die nahtlos mit ihrer bestehenden Dateninfrastruktur interagieren können.
Einige der wichtigsten Integrationen und Ökosystemkomponenten von Apache Airflow sind:
- Operatoren und Hooks: Apache Airflow bietet eine Reihe von integrierten Operatoren und Hooks, die zur Interaktion mit verschiedenen Datenquellen und -zielen verwendet werden können. Dazu gehören Operatoren und Hooks für die Arbeit mit Datenbanken, Cloud-Diensten, Messaging-Systemen und mehr. Operatoren und Hooks können auch mit benutzerdefiniertem Code erweitert werden, um zusätzliche Datenquellen oder Ziele zu unterstützen.
- Plugins von Drittanbietern: Apache Airflow verfügt über eine große und aktive Community, die eine breite Palette von Plugins von Drittanbietern entwickelt hat. Diese Plugins können verwendet werden, um die Funktionalität von Apache Airflow zu erweitern und zusätzliche Integrationen mit gängigen Datenquellen und -zielen bereitzustellen. Beispiele für beliebte Plugins von Drittanbietern sind Integrationen mit AWS-Diensten, Kubernetes und mehr.
- Sensoren: Apache Airflow bietet Sensoren, die verwendet werden können, um auf das Eintreten bestimmter Ereignisse zu warten, bevor mit einem Workflow fortgefahren wird. So kann ein Sensor beispielsweise darauf warten, dass eine Datei in einem bestimmten Verzeichnis erscheint oder dass eine Nachricht in einer Messaging-Warteschlange empfangen wird.
- Ausführungsprogramme: Apache Airflow bietet eine Reihe von Executors, die zur Ausführung von Aufgaben innerhalb eines Workflows verwendet werden können. Dazu gehören lokale Executors, die Aufgaben auf demselben Rechner wie der Apache Airflow Scheduler ausführen, und verteilte Executors, die Aufgaben auf entfernten Rechnern ausführen.
- Überwachung und Visualisierung: Apache Airflow bietet eine Reihe von Überwachungs- und Visualisierungstools, mit denen Benutzer den Fortschritt ihrer Workflows verfolgen können. Zu diesen Tools gehört eine Weboberfläche, die den Status laufender Workflows anzeigt, sowie Metriken und Protokolldaten, die zur Diagnose von Problemen verwendet werden können.
Insgesamt machen die Integration und das Ökosystem von Apache Airflow es zu einem leistungsstarken Werkzeug für die Erstellung komplexer Daten-Workflows. Mit seiner breiten Palette an Integrationen und Erweiterungsmöglichkeiten lässt sich Apache Airflow an nahezu jede Dateninfrastruktur anpassen. Die aktive Community und das Ökosystem von Plugins und Integrationen bedeuten auch, dass die Benutzer von den neuesten Technologien und Best Practices im Bereich Data Engineering und Data Science profitieren können.
Das solltest Du mitnehmen
- Apache Airflow ist eine Open-Source Plattform für das Management von Workflows in der Datenverarbeitung und bei DevOps-Automatisierungen.
- Damit lassen sich Datenpipelines als gerichtete, azyklische Graphen erstellen und mithilfe des Schedulers zu bestimmten Zeiten einfach starten.
- Apache Airflow kann in Python installiert werden und die einzelnen Komponenten können durch eigene Funktionen einfach erweitert werden.
Was ist die Bivariate Analyse?
Nutzen Sie die Bivariate Analyse: Erforschen Sie Typen und Streudiagramme und nutzen Sie Korrelation und Regression.
Was ist eine RESTful API?
Erfahren Sie alles über RESTful APIs und wie sie Ihre Webentwicklungsprojekte effizienter und skalierbarer machen können.
Was sind Zeitreihendaten?
Gewinnen Sie mithilfe von Analyse- und Prognosetechniken Erkenntnisse aus Zeitreihendaten. Entdecken Sie Trends und Muster!
Was ist ein Balkendiagramm?
Entdecken Balkendiagramme bei der Datenvisualisierung. Lernen Sie, wie man sie für aufschlussreiche Datenanalyse erstellt und anpasst.
Was ist ein Liniendiagramm?
Meistern Sie die Kunst der Liniendiagramme: Lernen Sie in unserem Leitfaden, wie Sie Trends und Muster visualisieren können.
Was ist Data Preprocessing?
Optimieren Sie Ihre Datenanalyse mit effektivem Data Preprocessing. Lernen Sie das Wesentliche in unserem Leitfaden zur Datenvorverarbeitung.
Andere Beiträge zum Thema Apache Airflow
Niklas Lang
Seit 2020 bin ich als Machine Learning Engineer und Softwareentwickler tätig und beschäftige mich leidenschaftlich mit der Welt der Daten, Algorithmen und Softwareentwicklung. Neben meiner Arbeit in der Praxis unterrichte ich an mehreren deutschen Hochschulen, darunter die IU International University of Applied Sciences und die Duale Hochschule Baden-Württemberg, in den Bereichen Data Science, Mathematik und Business Analytics.
Mein Ziel ist es, komplexe Themen wie Statistik und maschinelles Lernen so aufzubereiten, dass sie nicht nur verständlich, sondern auch spannend und greifbar werden. Dabei kombiniere ich praktische Erfahrungen aus der Industrie mit fundierten theoretischen Grundlagen, um meine Studierenden bestmöglich auf die Herausforderungen der Datenwelt vorzubereiten.