apache

Apache Airflow: Was ist das und wie kann man es nutzen?

Jochen K

Jochen K

4 min

Apache Airflow ist eine Open-Source-Plattform zur Planung von Arbeitsabläufen, die im Bereich der Datentechnik weit verbreitet ist. Erfahre alles, was Du über dieses Data Engineer Tool wissen musst: Funktionsweise, Anwendungsfälle, Hauptkomponenten…

Die Geschichte von Apache Airflow beginnt im Jahr 2015 in den AirBnB-Büros. Damals erlebte die 2008 gegründete Ferienvermietungsplattform ein kometenhaftes Wachstum und war von einer immer größeren Datenmenge überwältigt.

Das kalifornische Unternehmen rekrutierte massenhaft Data Scientists, Data Analysten und Data Engineers, die zahlreiche Prozesse durch das Schreiben von geplanten Batch-Jobs automatisieren. Um sie zu unterstützen, hat der Dateningenieur Maxime Beauchemin ein Open-Source-Tool namens Airflow entwickelt.

Dieses Planungstool soll es Teams ermöglichen, Batch-Dateien-Pipelines zu erstellen, zu überwachen und zu iterieren. Innerhalb weniger Jahre hat sich Airflow zu einem Standard im Bereich der Datentechnik entwickelt.

April 2016 wurde das Projekt in den offiziellen Inkubator der Apache Foundation aufgenommen. Es setzt seine Entwicklung fort und erhält im Januar 2019 die Bezeichnung eines „Spitzenprojekts”. Fast zwei Jahre später, im Dezember 2020, hat Airflow mehr als 1.400 Mitwirkende, 11.230 Beiträge und 19.800 Sterne auf Github.

Die Version Airflow 2.0 ist seit dem 17. Dezember 2020 verfügbar und bringt neue Funktionen und viele Verbesserungen. Dieses Tool wird von Tausenden von DateningenieurInnen auf der ganzen Welt verwendet.

Was ist Apache Airflow?

Mit der Apache Airflow-Plattform kannst du Workflows (Arbeitsabläufe) durch Computerprogrammierung erstellen, planen und überwachen. Es handelt sich um eine vollständig Open source-Lösung, die sehr nützlich für die Architektur und Komposition komplexer Datenpipelines und für Aufgabenstart ist.

Die Plattform hat mehrere Vorteile. Zunächst einmal handelt es sich um eine dynamische Plattform, denn alles, was mit Python-Code gemacht werden kann, kann auch auf Airflow gemacht werden.

Es ist außerdem erweiterbar und verfügt über zahlreiche Plugins, die eine Interaktion mit den meisten gängigen externen Systemen ermöglichen. Es ist auch möglich, neue Plugins für spezielle Anforderungen zu erstellen.

Darüber hinaus sorgt Airflow für Elastizität. Die Teams der DateningenieurInnen können damit täglich Tausende verschiedener Aufgaben ausführen.

Workflows werden als Directed Acyclic Graphs (DAGs) gestaltet und ausgedrückt, wobei jeder Knoten eine bestimmte Aufgabe darstellt. Airflow ist als „Code-First”-Plattform konzipiert, die eine sehr schnelle Iteration von Workflows ermöglicht. Diese Philosophie bietet im Vergleich zu anderen Pipeline-Tools ein hohes Maß an Skalierbarkeit.

Wofür wird Airflow verwendet?

Airflow kann für jede Batch-Datenpipeline verwendet werden, sodass die Anwendungsfälle ebenso zahlreich wie vielfältig sind. Diese erweiterbare Plattform eignet sich besonders gut für die Komposition von Aufgaben mit komplexen Abhängigkeiten von mehreren externen Systemen.

Durch das Schreiben von Pipelines in Code und die Verwendung der verschiedenen verfügbaren Plugins ist es möglich, Airflow mit allen abhängigen Systemen über eine einheitliche Plattform für Komposition und Monitoring zu integrieren.

Airflow kann beispielsweise verwendet werden, um tägliche Aktualisierungen des Vertriebsteams aus Salesforce zusammenzufassen und einen täglichen Bericht an die Führungskräfte des Unternehmens zu senden.

Darüber hinaus kann die Plattform genutzt werden, um Machine Learning-Aufträge auf externen Spark-Clustern zu organisieren und auszuführen. Es kann auch verwendet werden, um Website- oder App-Daten stündlich in ein Data Warehouse hochzuladen.

Die Airwave-Komponenten

Die Airwave-Architektur basiert auf mehreren Komponenten. Hier sind die wichtigsten davon.

DAGs

Ein DAG (Directed Acyclic Graph, gerichteter azyklischer Graph) ist eine in Python-Code definierte Datenpipeline. Jeder DAG stellt eine Folge von auszuführenden Aufgaben dar, die so organisiert sind, dass die Beziehungen zwischen den Aufgaben auf der Airflow-BenutzerInnenoberfläche angezeigt werden.

Jedes der drei Wörter im Akronym „DAG” entspricht einer Eigenschaft dieser Aufgaben. Sie sind „Directed” (gerichtet), weil Aufgaben mindestens eine vorgelagerte und eine nachgelagerte Aufgabe haben müssen.

Sie sind „Acyclic” (azyklisch), da die Tasks keine selbstreferenzierenden Daten erzeugen dürfen, um Endlosschleifen zu vermeiden. Und “Graph” (graphisch), da die Aufgaben in einer klaren Struktur dargestellt werden, die ihre Beziehungen aufzeigt.

Die Aufgaben

Jeder Knoten in einem DAG stellt eine Aufgabe dar. Es handelt sich um eine visuelle Darstellung der Aufträge, die in jeder Phase des Arbeitsablaufs ausgeführt werden. Die dargestellten Stellen werden von den BetreiberInnen definiert.

Operatoren

Die Operatoren sind die Bausteine der Airflow-Plattform. Sie dienen dazu, die ausgeführten Aufgaben zu bestimmen. Es kann eine einzelne Aufgabe oder der Knoten eines DAG sein, die definiert, wie die Aufgabe ausgeführt werden soll.

Die DAG sorgen dafür, dass die Operatoren in einer bestimmten Reihenfolge geplant und ausgeführt werden, während die Operatoren die in jeder Phase des Prozesses auszuführenden Aufgaben festlegen.

Es gibt drei Hauptkategorien von Operatoren. Erstens: Aktion-Operatoren führen eine Funktion durch. Beispiele sind der PythonOperator oder der BashOperator.

Übertragungsoperatoren ermöglichen die Übertragung von Daten von einer Quelle zu einem Ziel, wie z. B. der S3ToRedshiftOperator.

Schließlich bleiben die Erfassungsoperatoren passiv, bis sie ein Ereignis entdecken. Dies ist der Fall beim ExternalTaskSensor.

Jeder Operator wird individuell definiert. Allerdings können die Operatoren untereinander Informationen über XComs austauschen.

Hooks

Bei Airflow ermöglichen die Hooks die Schnittstelle zu Systemen von Drittanbietern. Sie ermöglichen die Verbindung zu APIs und externen Datenbanken wie Hive, S3, GCS, MySQL, Postgres…

Vertrauliche Informationen, wie z. B. Anmeldedaten, werden außerhalb der Hooks aufbewahrt. Sie werden in einer verschlüsselten Metadaten-Datenbank gespeichert, die der laufenden Airflow-Instanz zugeordnet ist.

Plugins

Airflow-Plugins können als eine Kombination aus Hooks und Operatoren beschrieben werden. Sie werden verwendet, um bestimmte Aufgaben mit einer externen Anwendung auszuführen.

Dies könnte zum Beispiel die Übertragung von Daten von Salesforce zu Redshift sein. Es gibt eine umfangreiche Open-Source-Sammlung von Plugins, die von der BenutzerInnengemeinschaft erstellt wurden, und jede Nutzerin bzw. jeder Nutzer kann Plugins für spezielle Bedürfnisse erstellen.

Verbindungen

„Verbindungen” ermöglichen Airflow, Informationen zu speichern, die eine Verbindung zu externen Systemen wie API-Zugangsdaten oder Token ermöglichen.

Sie werden direkt über die BenutzerInnenoberfläche der Plattform verwaltet. Die Daten werden verschlüsselt und als Metadaten in einer Postgres- oder MySQL-Datenbank gespeichert.

Wie kann ich lernen, Airflow zu benutzen?

Um die Verwendung von Airflow zu lernen, kannst Du einfach einen Apache Airflow-Weiterbildungskurs belegen. Die Beherrschung dieser Lösung ist eine der Fähigkeiten, die Du in unserer Weiterbildung zu Data Engineers oder zum Machine Learning Engineers erwerben kannst.

Du weißt jetzt alles über Apache Airflow. Erfahre mehr über die Docker-Container-Plattform und Snowflake, die Data Warehouse Cloud.