Neue Apache Airflow Features, die Sie nicht verpassen sollten

Robin Brandt

Geschrieben von: Robin Brandt - 19 Oktober 2023

Im Zeitalter der rasanten Digitalisierung ist es für Unternehmen von größter Bedeutung, mit der sich verändernden IT-Landschaft Schritt zu halten. Eine robuste Orchestrierungs-Engine, die in der Lage ist, komplexe Workflows nahtlos zu verwalten, Aufgaben zu automatisieren und eine fehlerfreie Ausführung zu gewährleisten, ist die Grundlage, um die Herausforderungen der Datenintegration und -analyse zu bewältigen.

Apache Airflow wird von einer lebhaften und aktiven Open Source Community entwickelt und hat sich als eine der führenden Technologien in diesem Bereich bewährt. Dabei wird es ständig weiterentwickelt und verbessert, sowohl in Bezug auf bestehende Funktionen als auch auf die Erweiterung seines Funktionsumfangs. Welche der kürzlich hinzugefügten Funktionen von Apache Airflow werden Ihrem Team helfen, die gewünschten Ziele zu erreichen und die Prozessabläufe zu verbessern? Wir stellen Ihnen eine kurze Liste von Neuerungen vor, die ein zeitnahes Systemupgrade rechtfertigen könnten.

Seit September 2022 wurden vier kleinere Nebenversionen von Airflow veröffentlicht, die jeweils neue Features und Funktionalitäten für die inzwischen gut etablierte Hauptversion Airflow 2.x enthielten. Von der Optimierung Ihrer Pipelines mithilfe von Setup- und Teardown-Tasks bis hin zur Verbesserung Ihres internen Berichtswesens mithilfe der Benachrichtigungsfunktion von Airflow möchten wir Ihnen das Potenzial vorstellen, das die kollektive Intelligenz eines Open Source-Ökosystems Ihrem Unternehmen bieten kann. Bei den folgenden Aspekten handelt es sich um neue Ergänzungen oder überarbeitete Facetten von Apache Airflow Features, die im letzten Jahr veröffentlicht wurden.

Überarbeitung der Task Queue

Tasks, die während der Verarbeitung stecken bleiben, können bei der Arbeit mit Orchestrierungs-Engines im großen Maßstab ein großes Ärgernis darstellen. In der Vergangenheit konnte dies gelegentlich mit Airflow passieren, insbesondere bei Verwendung des Celery Executors. Aufgaben konnten im Status "queued" stecken bleiben und nur dann weiterverarbeitet werden, wenn die aktuelle Instanz des Task Schedulers beendet und die verwaiste Aufgabe von einem anderen Task Scheduler übernommen wurde, wodurch sich die Task-Ausführung einige Stunden verzögern konnte. Eine gängige Behelfslösung für dieses Problem war die Konfigurationseinstellung "AIRFLOW__CELERY__STALLED_TASK_TIMEOUT", welche die meisten, aber nicht alle Probleme mit festsitzenden Tasks lösen konnte.

In Update 2.6.0 hat die Airflow-Community eine neue Einstellung namens "scheduler.task_queued_timeout" eingeführt, die diese Art von Situationen für die Celery- und Kubernetes-Executors behandelt. Airflow fragt nun regelmäßig seine interne Datenbank nach Tasks ab, die länger als der in dieser Einstellung festgelegte Wert in der Warteschlange stehen, und sendet jede dieser identifizierten steckengebliebenen Aufgaben an den Executor, damit dieser den Task fehlschlagen lässt und anschließend neu einplant.

Mit der Einführung dieser Einstellung wurden einige der älteren Workarounds als veraltet eingestuft, um die Konfiguration für diese Executors zu verinfachen. Bei den veralteten Einstellungen, die nun effektiv ersetzt wurden, handelt es sich um "kubernetes.worker_pods_pending_timeout", "celery.stalled_task_timeout" und "celery.task_adoption_timeout". Dadurch wird die Airflow-Aufgabenplanung zuverlässiger als je zuvor und die Konfiguration von Fehlschlag- und Wiederholungsversuchen erfordert keine experimentellen Workarounds mehr.

DAG-Status Benachrichtigungen

Die Überwachung des Status von Data Pipelines ist eine wichtige Herausforderung für jedes Data Science- oder Data Engineering-Team. Mit Version 2.6.0 hat die Airflow-Community die Funktion zur Benachrichtigung über den Status von DAGs eingeführt, die Ihrem Team hilft, den aktuellen Status Ihrer Data Pipelines von verschiedenen externen Systemen aus zu verfolgen. Diese neue Funktion ermöglicht es, eine Benachrichtigung an externe Systeme zu senden, sobald sich der Status eines DAG-Laufs ändert, z. B. wenn er abgeschlossen ist. Derzeit ist Slack das einzige System, das von Haus aus für die Benachrichtigungsunterstützung integriert ist. Aber es gibt bereits eine Vielzahl von zusätzlichen Systemintegrationen über Airflow-Erweiterungsmodule, die von Mitgliedern der Community entwickelt wurden. Dazu gehören u. a. Komponenten, die das Senden von Benachrichtigungen per E-Mail (SMTP) oder Discord ermöglichen. Natürlich können Sie auch selbst ein benutzerdefiniertes Benachrichtungsmodul für Ihr spezifisches System entwickeln, indem Sie die von Airflow bereitgestellte abstrakte Klasse BaseNotifier verwenden.

Im Folgenden sehen Sie ein Beispiel für eine DAG-Definition, bei der die Benachrichtigungsfunktion verwendet wird, um eine Slack-Nachricht bei erfolgreicher Ausführung zu senden:

mit DAG(

    "Beispiel_slack_notification",

    start_date=datetime(2023, 1, 1),

    on_success_callback=[

        send_slack_notification(

            text="DAG wurde erfolgreich ausgeführt",

            channel="#dag-status",

            benutzername="Airflow",

        )

    ],

)

 


Optimieren Sie Ihr Workflowmanagement
mit Apache Airflow 2.0

NextLyitcs Whitepaper Apache Airflow DE


Setup- und Teardown-Tasks

Komplexe Daten-Workflows erfordern häufig die Erstellung und Konfiguration von Infrastrukturressourcen, bevor sie ausgeführt werden können. Dieselben Ressourcen müssen auch nach Beendigung des Workflows aufgeräumt werden. Die Integration dieser Funktionalitäten in Ihre DAGs brachte in der Vergangenheit das Risiko mit sich, dass das Ergebnis der Pipeline-Ausführung verfälscht wurde, beispielsweise wenn bestimmte Ressourcen nicht ordnungsgemäß entfernt wurden, nachdem der logische Teil der Pipeline korrekt ausgeführt worden war. Mit dem Update 2.7.0 wurde das Apache Airflow Feature der Setup- und Teardown-Tasks eingeführt, die es nun ermöglicht, diese Schritte in dedizierten Subtasks zu handhaben.

Dies bringt mehrere Vorteile mit sich: Zum einen ermöglicht es einen stärker atomisierten Ansatz bei der Entwicklung Ihrer Data Pipeline, indem der logische Teil Ihrer Aufgaben von den Infrastrukturanforderungen getrennt wird. Dies verbessert die Lesbarkeit und Wartbarkeit des Codes. Andererseits kann sich die Art dieser neu eingeführten Setup- und Teardown-Tasks ändern, wenn eine Aufgabe als fehlgeschlagen betrachtet wird. So wird beispielsweise ein DAG-Lauf, der während des Teardown-Tasks fehlschlägt, obwohl die vorangegangenen Schritte alle fehlerfrei gelaufen sind, standardmäßig als erfolgreicher Lauf angezeigt. Dieses Verhalten kann zwar durch Konfigurationsänderungen überschrieben werden, eignet sich aber möglicherweise zur Vermeidung von Fehlalarmen bei der Überwachung Ihrer Pipelines.

In der Benutzeroberfläche der Airflow DAG-Graph-Ansicht wird ein Setup-Task mit einem nach oben zeigenden Pfeil, ein Teardown-Task mit einem nach unten zeigenden Pfeil und die Beziehung zwischen Setup- und Teardown-Task als gepunktete Linie dargestellt.

Apache_Airflow_Features_teardown_graph_view

Airflow Datasets und OpenLineage

Airflow wurde oft dafür kritisiert, dass es keinen datenorientierten Ansatz für Workflows bietet und sich ausschließlich auf die Ausführung von Aufgaben statt auf die eigentlichen Nutzdaten in Data Pipelines konzentriert. Die mit Version 2.4 im September 2022 eingeführte Airflow Dataset-Schnittstelle hat dies endlich geändert. Tasks können nun Datenobjekte definieren, die sie verarbeiten oder produzieren, und ganze DAGs können auf der Grundlage von Aktualisierungen von Datensätzen geplant werden. Eine Just-in-Time-Planung ohne sensorähnliche Abfrage ist nun ebenso möglich wie die Überwachung der Aktualität von Datensätzen in der Airflow-Benutzeroberfläche. Weitere Informationen finden Sie in unserem Blogbeitrag zur Einführung von Airflow Datasets von Anfang diesen Jahres.

Ein wichtiger Aspekt bei der Verwaltung und Bewertung dieser Systeme und ihrer Leistung ist es, den Überblick darüber zu behalten, wie sich Informationen durch das komplexe Netzwerk von Data Pipelines verbreiten, aus denen Data Warehouses und Business Intelligence-Plattformen gespeist werden. Welche nachgelagerten Tasks sind betroffen, wenn sich das Datenmodell in meiner Quelldatenbanktabelle ändert? Ein ganzes Ökosystem von Tools und Best Practices hat die Begriffe Data Observability und Data Lineage geprägt. Die Airflow Dataset-Schnittstelle war ein Meilenstein auf dem Weg zur Integration von Tools von Drittanbietern für die Nachverfolgung des Datenverlaufs durch die OpenLineage-Spezifikation.

Airflow Version 2.7 bietet ab August 2023 die Integration von OpenLineage als native Funktionalität. Wo früher Erweiterungsmodule manuell geladen und in DAG-Definitionen eingefügt werden mussten, registrieren sich Airflow-DAGs jetzt automatisch bei einem OpenLineage Backend Service. Diese Integration funktioniert besonders gut, wenn Tasks mit Eingabe- und Ausgabedatensätzen definiert werden, was eine grafische Nachverfolgung der Verarbeitung von Datenbeständen und ihrer jeweiligen vor- und nachgelagerten Abhängigkeiten ermöglicht.

Screenshot_marquez_open_lineage

Neue Apache Airflow Features - Unser Fazit

Während dieser Artikel nur eine Handvoll der aufregendsten neuen Features von Apache Airflow hervorhebt, gab es im vergangenen Jahr Tausende kleinerer Änderungen, die den Funktionsumfang erweitern, die Leistung verbessern und die Zuverlässigkeit der Orchestrierungsplattform erhöhen. Wenn Sie Ihr System auf dem neuesten Stand halten, ist dies nicht nur eine Sicherheitsmaßnahme, sondern ermöglicht auch den Zugang zu vielen neuen Funktionen und Verbesserungen von Apache Airflow.

Wir helfen Teams bei der Aktualisierung ihrer Airflow-Systeme und unterstützen sie dabei, mit den neuesten Änderungen Schritt zu halten. Wenden Sie sich gerne an uns, wenn Sie Fragen dazu haben, wie die neuen Funktionen Ihre Geschäftsprozesse stärken können, oder wenn Sie Ihre aktuelle Architektur und eine mögliche Roadmap besprechen möchten.

Erfahren Sie mehr über Apache Airflow

Themen: Machine Learning, Apache Airflow

Beitrag teilen

Sie haben eine Frage zum Blog?
Fragen Sie Robin Brandt