Die Schwerstarbeit des Data Engineering steht in scharfem Kontrast zu etwas, das so einfach ist wie Atmen oder so schnell wie der Wind. Aber anscheinend war es vor dem Aufkommen von Apache Airflow noch schwieriger.
Die Plattform ging 2015 bei Airbnb, der größten Website für Homesharing und Ferienwohnungen , als Orchestrator für immer komplexere Datenpipelines live. Sie ist nach wie vor ein führendes Workflow-Management-Tool, das von Tausenden von Unternehmen, von Technologiegiganten bis hin zu Startups, eingesetzt wird. Dieser Artikel behandelt die Vorteile von Airflow und gibt einen Hinweis darauf, warum es trotz all seiner Vorzüge kein Allheilmittel ist.
Bevor wir beginnen, können sich alle, die neu im Data Engineering sind , unser Video ansehen, in dem die allgemeinen Konzepte erklärt werden.
Was ist Apache Airflow?
Apache Airflow ist ein Open-Source- Workflow-Orchestrator auf Python- Basis, mit dem Sie Datenpipelines entwerfen, planen und überwachen können . Das Tool stellt Prozesse in Form gerichteter azyklischer Graphen dar, die kausale Beziehungen zwischen Aufgaben und die Reihenfolge ihrer Ausführung visualisieren.
Die Plattform wurde von einem Dateningenieur – nämlich Maxime Beauchemin – für Dateningenieure entwickelt . Kein Wunder, denn sie stellen über 54 Prozent der aktiven Benutzer von Apache Airflow dar. Andere technische Fachleute, die mit dem Tool arbeiten, sind Lösungsarchitekten , Softwareentwickler, DevOps- Spezialisten und Datenwissenschaftler .
Wofür wird Apache Airflow verwendet?
Airflow arbeitet mit Batch-Pipelines, also Sequenzen endlicher Jobs mit klarem Start und Ende, die in bestimmten Intervallen oder durch Trigger gestartet werden. Die häufigsten Anwendungen der Plattform sind
- Datenmigration oder die Übernahme von Daten aus dem Quellsystem und die Verschiebung in ein lokales Data Warehouse , einen Data Lake oder eine Cloud-basierte Datenplattform wie Snowflake , Redshift und BigQuery zur weiteren Transformation;
- End-to-End- Pipelines für maschinelles Lernen ;
- Datenintegration über komplexe ETL/ELT -Pipelines (Extrahieren-Transformieren-Laden/Extrahieren-Transformieren);
- automatisierte Berichterstellung; und
- DevOps-Aufgaben – beispielsweise das Erstellen geplanter Backups und das Wiederherstellen von Daten daraus.
Airflow ist besonders nützlich für die Orchestrierung von Big Data -Workflows. Aber wie jedes andere Tool ist es nicht allmächtig und hat viele Einschränkungen
Wenn der Luftstrom nicht funktioniert
Airflow ist kein eigenständiges Datenverarbeitungstool, sondern ein Instrument zur Verwaltung mehrerer Komponenten der Datenverarbeitung. Es ist auch nicht für kontinuierliche Streaming-Workflows vorgesehen.
Die Plattform ist jedoch mit Lösungen kompatibel, die nahezu Echtzeit- und Echtzeitanalysen unterstützen – wie Apache Kafka oder Apache Spark . In komplexen Pipelines können Streaming-Plattformen Live-Daten aus einer Vielzahl von Quellen aufnehmen und verarbeiten und in einem Repository speichern, während Airflow regelmäßig Workflows auslöst, die Daten in Stapeln transformieren und laden.
Eine weitere Einschränkung von Airflow besteht darin, dass Programmierkenntnisse erforderlich sind. Es hält an der Workflow-as-Code-Philosophie fest, was die Plattform für Nicht-Entwickler ungeeignet macht. Wenn dies kein großes Problem ist, lesen Sie weiter, um mehr über die Konzepte und die Architektur von Airflow zu erfahren, die wiederum die Vor- und Nachteile vorgeben.
Airflow-Architektur
Apache Airflow basiert auf einer grafischen Darstellung von Arbeitsabläufen und einer modularen Architektur mit mehreren Schlüsselkomponenten, die Sie von Anfang an kennen sollten.
Gerichteter azyklischer Graph (DAG)
Das Schlüsselkonzept von Airflow ist ein gerichteter azyklischer Graph (DAG), der auszuführende Aufgaben organisiert
- in einer bestimmten Reihenfolge, die durch Abhängigkeiten zwischen ihnen festgelegt ist (daher gerichtet); und
- ohne dass Zyklen zulässig sind (daher azyklisch).
Jeder DAG ist im Wesentlichen ein Python-Skript, das den Workflow als Code darstellt . Es enthält zwei Hauptkomponenten – Operatoren , die die auszuführende Arbeit beschreiben, und Task-Beziehungen , die die Ausführungsreihenfolge definieren. DAGs werden in einem bestimmten DAG-Ordner gespeichert.
Was Sie also hauptsächlich tun, wenn Sie mit Airflow interagieren, ist, DAGs zu entwerfen, die von der Plattform ausgeführt werden sollen. Sie können so viele DAGs erstellen, wie Sie für eine beliebige Anzahl von Aufgaben benötigen. In der Airflow-Produktionsumgebung gibt es normalerweise Hunderte von Workflows.
Metadatendatenbank
Eine Metadatendatenbank speichert Informationen über Benutzerberechtigungen, vergangene und aktuelle DAG- und Task-Ausführungen, DAG-Konfigurationen und mehr. Sie dient dem Scheduler als Informationsquelle.
Standardmäßig verarbeitet Airflow Metadaten mit SQLite, das nur für die Entwicklung gedacht ist. Für Produktionszwecke können Sie zwischen PostgreSQL 10+, MySQL 8+ und MS SQL wählen. Die Verwendung anderer Datenbank-Engines – beispielsweise Maria DB – kann zu Betriebsproblemen führen.
Luftstromplaner
Der Scheduler liest DAG-Dateien, löst Aufgaben entsprechend den Abhängigkeiten aus und verfolgt deren Ausführung. Er bleibt mit allen im DAG-Ordner gespeicherten Workflows synchronisiert und prüft, ob eine Aufgabe gestartet werden kann. Standardmäßig werden diese Abfragen einmal pro Minute durchgeführt, Sie können diesen Parameter jedoch konfigurieren.
Wenn eine bestimmte Aufgabe zur Ausführung bereit ist, übermittelt der Scheduler sie an einen Mittelsmann – den Executor.
Airflow-Executor und -Worker
Ein Executor ist ein Mechanismus, der für die Erledigung von Aufgaben verantwortlich ist. Nachdem er einen Befehl vom Scheduler erhalten hat, beginnt er mit der Zuweisung von Ressourcen für den laufenden Job.
Es gibt zwei Arten von Airflow-Executoren:
- Lokale Executoren befinden sich auf demselben Server wie der Scheduler.
- Remote-Executors werden auf unterschiedlichen Maschinen ausgeführt, sodass Sie Jobs skalieren und auf mehrere Computer verteilen können.
Zwei Haupt-Remote-Optionen sind Celery Executor und Kubernetes Executor . Celery ist eine asynchrone Task-Warteschlange für Python-Programme, aber um sie zu verwenden, müssen Sie einen Message Broker einrichten – RabbitMQ oder Redis. Gleichzeitig erfordert das Kubernetes-Szenario keine zusätzlichen Komponenten und kann im Gegensatz zu anderen Executoren je nach Arbeitslast automatisch hoch- und herunterskaliert werden (sogar auf Null).
Unabhängig vom Typ weist der Executor die Aufgaben letztendlich Workern zu – separaten Prozessen, die die Arbeit tatsächlich erledigen.
Airflow-Webserver
Der Airflow-Webserver führt eine Benutzeroberfläche aus, die die Überwachung und Fehlerbehebung von Datenpipelines vereinfacht.
Sie können DAG-Abhängigkeiten visualisieren, den gesamten DAG-Verlauf über Monate oder sogar Jahre in der Kalenderansicht anzeigen, Aufgabendauern und -überschneidungen mithilfe von Diagrammen analysieren, den Aufgabenabschluss verfolgen und Einstellungen konfigurieren, um nur einige Möglichkeiten zu nennen.
Alle oben genannten Elemente arbeiten zusammen, um Vorteile zu erzielen, die Airflow bei datengesteuerten Unternehmen so beliebt machen.
Vorteile von Apache Airflow
Um es noch einmal klarzustellen: Airflow zielt auf die Handhabung komplexer, groß angelegter, langsamer Workflows ab, die einem Zeitplan folgen müssen. Und es meistert diese Aufgabe wirklich gut. Mit 12 Millionen Downloads pro Monat ist es eines der beliebtesten Orchestrierungstools. Hier sind einige zusätzliche Vorteile, die die Plattform bietet, wenn Sie sie bestimmungsgemäß verwenden.
Einsatz von Python: großer Pool an technischen Talenten und erhöhte Produktivität
Python ist eine führende Programmiertechnologie im Allgemeinen und in der Datenwissenschaft im Besonderen. Laut der Stack Overflow-Umfrage von 2022 ist es die viertbeliebteste Sprache unter professionellen Entwicklern, und diejenigen, die nur das Programmieren lernen, setzen es auf den dritten Platz, nach den „Big Three“ der Frontend-Sprachen – HTML/CSS und JavaScript .
Die Tatsache, dass Airflow Python als Instrument zum Schreiben von DAGs gewählt hat, macht dieses Tool für eine breite Palette von Entwicklern und anderen technischen Fachleuten, ganz zu schweigen von Datenspezialisten, hochgradig verfügbar. Die Sprache verfügt über eine klare Syntax und ein reichhaltiges Ökosystem an Tools und Bibliotheken, mit denen Sie Workflows mit weniger Aufwand und Codezeilen erstellen können.
Alles als Code: Flexibilität und vollständige Kontrolle über die Logik
Da in Airflow alles Python-Code ist, können Sie Aufgaben und Abhängigkeiten nach Belieben optimieren, benutzerdefinierte Logik anwenden, die den Geschäftsanforderungen entspricht, und viele Vorgänge automatisieren. Die Plattform ermöglicht eine Vielzahl von Anpassungen und deckt auf diese Weise eine Vielzahl von Anwendungsfällen ab.
Sie können beispielsweise Workflows als dynamische DAGs programmieren. Dies spart Ihnen jede Menge Zeit, wenn Sie Hunderte oder Tausende ähnlicher Prozesse verarbeiten müssen, die sich in einigen Parametern unterscheiden. Anstatt solche DAGs manuell zu erstellen, besteht die Möglichkeit, ein Skript zu schreiben, das sie automatisch generiert. Dieser Ansatz findet beispielsweise Anwendung in ETL- und ELT-Pipelines mit vielen Datenquellen oder -zielen. Um sie auszuführen, benötigen Sie zahlreiche DAGs, die dieselbe Aufgabensequenz mit geringfügigen Änderungen wiederholen.
Gleichzeitige Aufgabenausführung und mehrere Scheduler: horizontale Skalierbarkeit und hohe Leistung
Airflow ist standardmäßig so konfiguriert, dass Aufgaben sequenziell ausgeführt werden. Sie können jedoch auch Hunderte von Jobs gleichzeitig in einem einzigen DAG ausführen, wenn zwischen ihnen keine Abhängigkeiten bestehen.
Ein Scheduler wiederum kann mehrere DAG-Analyseprozesse gleichzeitig ausführen. Darüber hinaus können Sie mehrere Scheduler parallel laufen lassen. All dies ermöglicht Airflow eine hohe Leistung und Skalierbarkeit, um den sich ändernden Anforderungen Ihres Unternehmens gerecht zu werden.
Zahlreiche Hooks: Erweiterbarkeit und einfache Integrationen
Airflow kommuniziert mit anderen Plattformen im Daten-Ökosystem über Hooks – High-Level-Schnittstellen, die Ihnen die Suche nach speziellen Bibliotheken oder das Schreiben von Code zum Aufrufen externer APIs ersparen.
Airflow oder seine Community bieten zahlreiche Hooks an. So können Sie schnell eine Verbindung zu vielen gängigen Datenbanken, Cloud-Diensten und anderen Tools herstellen – wie MySQL, PostgreSQL, HDFS ( Hadoop Distributed File System), Oracle, AWS, Google Cloud, Microsoft Azure, Snowflake, Slack, Tableau usw.
Die vollständige Liste der verfügbaren Hooks finden Sie hier . Falls für die Datenplattformen, mit denen Sie arbeiten, keine sofort einsatzbereiten Verbindungen vorhanden sind, können Sie mit Airflow diese individuell entwickeln und so Ihren speziellen Anwendungsfall implementieren. Wenn das Zielsystem über eine API verfügt, können Sie diese jederzeit in Airflow integrieren.
Vollständige REST-API: einfacher Zugriff für Dritte
Seit der Version 2.0 profitieren Airflow-Benutzer von einer neuen REST-API , die den Zugriff auf die Plattform für Dritte erheblich vereinfacht. Außerdem werden neue Funktionen hinzugefügt – wie beispielsweise
- Starten von Workflows nach Bedarf: Sie können eine Pipeline nach Ereignissen oder Prozessen in externen Systemen programmgesteuert auslösen;
- automatisierte Benutzerverwaltung; und
- Erstellen Sie Ihre eigenen Anwendungen basierend auf der Airflow-Weboberflächenfunktionalität.
Dies sind bei weitem nicht alle Vorteile, die die vollständige API bietet. Weitere Einzelheiten finden Sie in der API-Dokumentation von Airflow .
Open-Source-Ansatz: eine aktive und kontinuierlich wachsende Community
Open-Source-Software genießt normalerweise die Unterstützung einer großen Tech-Community, und Airflow ist da keine Ausnahme. Dank der großen Anzahl aktiver Benutzer, die bereits typische Herausforderungen im Zusammenhang mit dem Tool bewältigt haben, finden Sie online Antworten auf fast alle Fragen.
Die offizielle Community auf der Apache Airflow-Webseite umfasst über 500 Mitglieder. Das Tool hat 28.000 Sterne und mehr als 2.200 Mitwirkende auf GitHub, wo die Entwicklung des Tools am häufigsten stattfindet. Es gibt auch fast 10.495 Fragen mit dem Airflow-Tag auf Stack Overflow. Aber die größte Gruppe von über 17.000 Airflow-Fans lebt auf Slack .
Nachteile von Apache Airflow
Das Airflow-Team arbeitet ständig an der Funktionalität der Plattform, hört auf die Wünsche der Dateningenieure und geht auf Probleme in jeder nächsten Version des Produkts ein. Dennoch gibt es immer noch Raum für Verbesserungen. Hier sind einige der häufigsten Beschwerden von Airflow-Benutzern, sowohl technischen Fachleuten als auch Unternehmensvertretern sentiment analysis.
Keine Versionierung von Workflows
Die von Airflow-Benutzern am meisten gewünschte und lang erwartete Funktion ist die DAG-Versionierung – oder die Möglichkeit, an einer bestimmten Pipeline vorgenommene Änderungen aufzuzeichnen und zu verfolgen. Aufgrund der massiven Nutzung von Versionskontrollsystemen fehlt diese Funktion, wenn sie nicht verfügbar ist. Airflow verfügt jedoch immer noch nicht darüber.
Wenn Sie Aufgaben aus Ihrem DAG-Skript löschen, verschwinden sie aus der Airflow-Benutzeroberfläche sowie alle zugehörigen Metadaten. Folglich können Sie nicht zur vorherigen Änderung Ihrer Pipeline zurückkehren. Airflow empfiehlt, jedes Mal, wenn Sie etwas löschen möchten, einen neuen DAG unter einer separaten ID zu erstellen. Eine andere Lösung besteht darin, DAGs selbst in Git, GitHub oder einem ähnlichen Repository zu verwalten. Dies erhöht jedoch die Komplexität Ihrer täglichen Routine.
Unzureichende Dokumentation
Einer der Kommentare zur Airflow-Dokumentation beschreibt sie als „akzeptabel, aber nicht großartig“. Die meisten Beispiele, die Sie in Benutzerhandbüchern finden , sind sehr gekürzt, es fehlen Details und gründliche, schrittweise Anleitungen.
Die Airflow-Umfrage 2022 zeigt, dass über 36 Prozent der Spezialisten, die mit der Plattform arbeiten, eine Verbesserung der offiziellen technischen Dokumente und anderer Ressourcen zur Verwendung von Airflow wünschen . Eine solche Verbesserung würde viele Probleme bei der Einarbeitung neuer Benutzer lösen und die Lernkurve etwas abflachen.
Anspruchsvolle Lernkurve
Um mit Airflow arbeiten zu können, müssen neue Benutzer eine ganze Menge Dinge verstehen: die integrierte Planungslogik, Schlüsselkonzepte, Konfigurationsdetails und mehr. Ganz zu schweigen davon, dass Sie über umfassende Kenntnisse in Python-Skripting verfügen müssen, um den Workflow als Code-Ansatz optimal nutzen zu können – einschließlich des Schreibens benutzerdefinierter Komponenten und Verbindungen.
Kein Wunder, dass Anfänger Schwierigkeiten haben, die Funktionsweise von Airflow zu erlernen. Viele Ingenieure beschweren sich, dass diese Erfahrung verwirrend und alles andere als intuitiv ist.
Die Komplexität der Produktionseinrichtung und Wartung
Diese weithin bekannte Falle ist eine Fortsetzung der beiden vorherigen. Airflow besteht aus vielen Komponenten, um die Sie sich kümmern sollten, damit sie gut zusammenarbeiten. Wenn es um die Produktionsumgebung geht, nimmt die Komplexität nur zu, da Sie Celery und Message Broker oder Kubernetes-Cluster einrichten und warten müssen. Um die Sache noch schwieriger zu machen, enthalten die offiziellen Dokumente keine detaillierten Informationen dazu, wie man das richtig macht.
Aufgrund dieser technischen Probleme stellen Unternehmen häufig externe Berater ein oder kaufen kostenpflichtige Airflow-Dienste wie Astronomer oder Cloud Composer von Google. Diese Produkte verfügen über zusätzliche Funktionen, die die Bereitstellung, Skalierung und Wartung der Airflow-Umgebung in der Produktion vereinfachen.
Wie beginne ich mit Apache Airflow?
Trotz aller Vor- und Nachteile bleibt Apache Airflow der De-facto-Standard für die Workflow-Orchestrierung. Hier sind einige nützliche Ressourcen, die Ihnen dabei helfen, sich mit dem Tool vertraut zu machen.
Der Inhalt der neuesten Version 2.4.2 von Apache Airflow dient als Leitfaden für offizielle Dokumentationen, Tutorials, FAQs, Anleitungen und mehr.
Airflow 101: Wichtige Tipps für Anfänger ist ein Webinar von Astronomer, das die wichtigsten Konzepte und Komponenten der Plattform sowie Best Practices für die Arbeit damit vorstellt.
Das Airflow-Tutorial für Anfänger auf YouTube kombiniert Erklärungen der Kernkonzepte mit praktischen Demos, damit Sie in nur zwei Stunden mit dem Tool loslegen können. Der Kurs ist kostenlos und die einzige Voraussetzung, um ihn optimal nutzen zu können, sind Python-Kenntnisse.
Airflow – von Null zum Helden und Einführung in Apache Airflow sind zwei weitere kostenlose Videos von Class Central, die Ihnen dabei helfen, die Airflow-Umgebung einzurichten, eine Verbindung zu externen Quellen herzustellen und Ihren ersten DAG zu schreiben.
Einführung in Airflow in Python auf DataCamp bietet eine kostenlose Einführung in Airflow-Komponenten. Wenn Sie den kommerziellen Teil des Kurses belegen, lernen Sie, wie Sie DAGs implementieren, Workflows verwalten und überwachen und Produktionspipelines erstellen.
Die vollständige praktische Einführung in Apache Airflow auf Udemy ist ein Bestseller-Kurs, der Ihnen anhand praktischer Beispiele beibringt, Airflow-Datenpipelines zu schreiben, zu planen und zu überwachen. Insgesamt gibt es auf dieser Ressource 18 Kurse zu Apache Airflow. Sie können sie hier durchsehen .
Dieser Artikel ist Teil unserer Reihe „Das Gute und das Schlechte“. Wenn Sie sich für Webentwicklung interessieren, werfen Sie einen Blick auf unseren Blogbeitrag zu