Apache hat eine neue Version von Airflow veröffentlicht. Jeder, der dieses Tool verwendet, weiß, dass geringfügige Änderungen die Funktionsweise von DAGs verändern oder sie vollständig blockieren können. Apache Airflow Version 2.0 ist noch nicht auf Cloud-Plattformen verfügbar, aber Datenpipeline ist unsere Domain, also überprüfen wir, was neu ist. Hier beschreiben wir unsere ersten Eindrücke und auf welche Änderungen Sie in der Hauptversion vorbereitet sein sollten.

Airflow 2.0 ist da — die größten Unterschiede zwischen Airflow 1.10.x und 2.0
Neue Benutzeroberfläche, Airflow
Airflow 2.0 hat ein völlig neues Aussehen erhalten, das auf dem Flask App Builder-Modul basiert. Mit einem neuen Dashboard ist es jetzt einfacher, die benötigten Informationen zu finden und in Ihren DAGs zu navigieren. Diese Version verfügt über zusätzliche Filter, um die Suche nach bestimmten Diagrammen und angezeigten Tags zu erleichtern.

Der Dag Run-Bildschirm hat auch ein neues Bildschirmlayout mit zusätzlichen Informationen wie „Run-Typ“, „Externer Trigger“ oder Informationen zur angewendeten Konfiguration.

Auf dem Aufgabenbildschirm finden Sie ein Feld mit einem Dokumentationsbereich, der beim Wissenstransfer von der Entwicklungsphase zur Supportphase sehr hilfreich sein kann. Außerdem wurde auf dem DAG-Bildschirm ein sehr nützlicher Schalter „Automatische Aktualisierung“ angezeigt. Wenn Sie die Ausführung Ihres Codes in einem Diagramm überwachen, können Sie dies aktivieren, um sich auf andere Aktivitäten zu konzentrieren.

Wenn Sie eine sehr komplexe DAG mit vielen Aufgaben erstellen, können Sie Ihre Aufgaben in logischen Gruppierungen zusammenfassen. Mithilfe dieser Lösung können Sie feststellen, in welcher Phase Ihr Prozess feststeckt. Stellen Sie sich vor, wie schwierig es wäre, festzustellen, in welchem Schritt der ETL-Prozess fehlgeschlagen ist, wenn Ihre DAG Hunderte von Aufgaben hat. Jetzt können Sie sie in Abschnitte gruppieren. Sie können Abschnitte auch innerhalb eines Abschnitts verschachteln, um problematische Logikgruppen leichter zu finden.


Manchmal hat sogar ein Team von Entwicklern, die Codierungsstandards verwenden, Schwierigkeiten herauszufinden, wo Verbindungen verwendet werden. Die neue Version von Airflow hat nicht nur neue Verbindungstypen hinzugefügt, sondern auch ein Beschreibungsfeld, das es einfacher macht, zu identifizieren, wofür eine Verbindung verwendet wird.

Ein weiterer interessanter Teil sind „Plugins“, die im Menü „Admin“ verfügbar sind. Diese Seite enthält Informationen zu Ihren installierten Plugins. Um ehrlich zu sein, vielleicht ist es keine vollständige Verwaltungs-Plugin-Engine, aber sie bietet Informationen über installierte Erweiterungen und hilft Entwicklern, Konflikte zu erkennen, wenn sie keinen Administratorzugriff auf das System haben.

Airflow wird immer häufiger als Bestandteil größerer Systeme eingesetzt. Wenn Sie erwägen, Ihr System mit Airflow zu integrieren, sollten Sie wissen, dass Sie derzeit über eine gute API-Dokumentation verfügen werden. Sie verwenden Swagger? Da bist du. Du kennst Swagger nicht, aber du kennst Redoc? Kein Problem. Die neue Version von Airflow bietet gut dokumentierte APIs für beide Komponenten. Auf diese Weise können Sie Airflow ohne einen Teil der Benutzeroberfläche verwenden.


Ein neu gestalteter Scheduler, Airflow
Möglicherweise hatten Sie in früheren Versionen aufgrund von Scheduler-Fehlern mehrere Probleme mit der DAG-Ausführung, zum Beispiel:
- Verzögerungen bei der Aufgabenübernahme (Verzögerung beim Wechsel von einer Aufgabe zur nächsten Aufgabe),
- Probleme bei Wiederholungsversuchen oder bei der Verteilung an Arbeitnehmer.
Der Scheduler ist eine Kernfunktionalität von Apache Airflow. In der zweiten Version von Airflow lag der Schwerpunkt auf der Verbesserung wichtiger Elemente, um Verzögerungen zu reduzieren und es zu ermöglichen, viele Scheduler im gleichzeitigen Modus mit horizontaler Skalierung auszuführen, ohne dass während der Scheduler-Replikation Aufgaben übersehen werden. Die neue Version optimiert auch die Ressourcennutzung, da der Scheduler schneller arbeitet, ohne die CPU oder den Arbeitsspeicher zu erhöhen. Version 2.0 bietet ein Hochverfügbarkeits-Manifest. Wenn ein System also mehr als einen Scheduler verwendet, erwarten wir keine Ausfallzeiten. Das ist möglich, weil jeder Scheduler alles im unabhängigen Modus erledigt.

Diese Lösung hilft, die Leistung bei der Ausführung vieler DAGs im Parallelmodus zu verbessern; in einigen Tests hat sich die Leistung verzehnfacht.
REST-API
Airflow kann jetzt ein vollständiges Management-Tool sein. Mit der REST-API können Sie alle DAGs überprüfen, auslösen und Aufgabeninstanzen verwalten. Dies ist nur ein kleiner Teil dessen, was diese API für Sie tun kann. Sie bietet eine Methode zum Hinzufügen neuer Verbindungen, listet sie aber auch auf. Die API bietet Informationen zu bestehenden Verbindungen, sodass Sie diese in anderen Systemen verwenden können. Es ist möglich, Variablen zu lesen, die in Airflow- oder xCom-Ergebnissen gespeichert sind, sodass Sie die Ergebnisse einer Aufgabe während der Verarbeitung einer DAG verfolgen können. Natürlich können Sie mit der angegebenen Konfiguration auch die DAG-Ausführung, einschließlich der DAG-Ausführung, problemlos steuern oder sich eine einfache DAG-Darstellung anzeigen lassen.
Intelligenter Sensor
Airflow 2.0 bietet einen erweiterten Sensoroperator namens SmartSensor Operator. Der SmartSensor-Bediener kann den Status von Aufgaben im Batch-Modus überprüfen und Informationen über diesen Sensor in der Datenbank speichern. Es verbessert auch die Leistung und behebt ein früheres schwerwiegendes Sensorproblem.
DAG-Versionierung
In der vorherigen Version von Airflow konnten Sie einer vorhandenen DAG neue Aufgaben hinzufügen. Dies hatte jedoch einige unerwünschte Auswirkungen, z. B. verwaiste Aufgaben (Aufgaben ohne Status) in DAGRUN, sodass Sie Aufgaben finden konnten, die in einer aktuellen Version einer DAG in der vorherigen Ausführung hinzugefügt wurden. Aus diesem Grund könnten Probleme beim Überprüfen von Protokollen oder beim Anzeigen von Code auftreten, der dem aktuellen DAGrun zugewiesen ist. In Version 2.0 gibt es zusätzliche Unterstützung für das Speichern vieler Versionen serialisierter DAGs, wodurch die Beziehungen zwischen DAGRuns und DAGs korrekt angezeigt werden.
DAG-Serialisierung
Die neue Version hat die Art und Weise geändert, wie der Systemserver DAGs analysiert. In der vorherigen Version benötigten der WebServer und die Scheduler-Komponente Zugriff auf die DAG-Datei. In der neuen Version von Airflow benötigt nur der Scheduler Zugriff auf die DAG-Datei, der Scheduler, der DAGs analysiert, benötigt nur Zugriff auf die Metadaten-Datenbank und der Webserver benötigt nur Zugriff auf Metadaten. Aus dieser Änderung erhalten wir:
- Hochverfügbarkeit für den Scheduler
- DAG-Versionierung
- Schnellere DAG-Bereitstellung
- Verzögertes Laden der DAG
- Jetzt ist der Webserver zustandslos
Eine neue Art, DAGs zu definieren
Die neue Version bietet eine neue Möglichkeit, DAGs mit der TaskFlow-API zu definieren. Jetzt können Sie Python-Dekoratoren verwenden, um Ihre DAG zu definieren.
In Bezug auf das obige Beispiel können Sie einfache DAGs in reinem Python mit klarer Handle-Abhängigkeit schneller schreiben. Außerdem ist XCom Push einfacher zu verwenden. Darüber hinaus bietet die neue Version Task-Decorators und unterstützt auch ein benutzerdefiniertes xCom-Backend.
Was sonst?
Airflow 2.0. ist kein Monolithikum. Es wurde in seine Kern- und 61 Provider-Pakete aufgeteilt. Jedes dieser Pakete ist für einen bestimmten externen Dienst, eine bestimmte Datenbank (MySQL oder Postgres) oder ein Protokoll (HTTP/FTP) bestimmt. Dadurch können Sie eine benutzerdefinierte Airflow-Installation durchführen und ein Tool erstellen, das Ihren individuellen Anforderungen entspricht. Zusätzlich erhalten Sie:
- Erweiterte Unterstützung für den Kubernetes Executor
- Plugin-Manager
- KEDA Warteschlangen
Weitere Informationen zu Data Pipeline- und Airflow-Lösungen finden Sie in unserem Blog:
- Benutzerdefinierte Airflow-E-Mail
- Warum ersetzt BigQuery Hadoop?
- Definition und Design der Datenpipeline