Bevor wir uns damit beschäftigen, was Apache Airflow ist, sollten wir zunächst erklären, was Data Engineers und Data Scientists tun.
Data Engineers entwickeln Systeme, die Rohdaten extrahieren, sammeln, verwalten und konvertieren, um sie schließlich in nützliche Informationen zu organisieren, die Data Scientists interpretieren können.
Data Scientists verwenden dieselben Daten, um eine detaillierte Analyse zur Vorhersage von Trends und zur Beantwortung von Fragen, die für das Unternehmen relevant sind, zu erstellen.
Was ist Apache Airflow?
Lassen Sie uns direkt in Apache Airflow eintauchen und unsere Reise als Data Engineer und Data Scientist beginnen.
Was ist Apache Airflow und was ist es nicht?
Apache Airflow ist ein Orchestrator, der es Ihnen ermöglicht, Aufgaben zum richtigen Zeitpunkt, auf die richtige Weise und in der richtigen Reihenfolge auszuführen. Sie sollten Apache Airflow auf keinen Fall als eine Daten-Streaming-Lösung oder ein Datenverarbeitungs-Framework wie Apache Spark oder Flink betrachten. Das primäre Ziel von Apache Airflow ist nicht die Verarbeitung großer Datenmengen.
In einer früheren Version von Airflow (Version 1.0) waren alle Operatoren (Anbieter) in das gleiche riesige Python-Paket namens Apache-Airflow integriert. Es war ein großes Problem, wenn man sie einzeln aktualisieren musste (z. B. um die nächste Version des Operators zu verwenden).
Ein häufig auftretendes Problem ist, dass einer der Betreiber ein Problem hat, das mit der vorhandenen Konfiguration nicht gelöst werden kann.
In diesem Fall können Sie nicht nur das Paket des problematischen Anbieters herabstufen. Die einzige verfügbare Lösung war, auf das nächste Airflow-Update zu warten, das das Problem behebt.
Mit Airflow Version 2.0 ist das vorbei!
Dieses Problem ist der Hauptgrund für die Einführung von Airflow 2.0.
In dieser Version wird jeder Anbieter als separates Python-Paket erstellt. Dies gibt Ihnen mehr Flexibilität, da Sie nur die Pakete installieren müssen, die für Ihren Anwendungsfall erforderlich sind.
Einige der am häufigsten verwendeten Operatoren, wie z.B. PythonOperator und BashOperator, sind Teil des Basispakets apache-airflow.
Was sind die Vorteile von Apache Airflow?
- Dynamics
Die Datenpipeline ist dynamisch (falls Sie Python verwenden). Wenn Sie Airflow verwenden möchten, sollten Sie Ihre Datenpipeline in Python schreiben.
- Skalierbarkeit
- Transparenz
Die Airflow Web UI ist nützlich und bietet Ihnen viele Optionen zur Überwachung, Konfiguration und Fehlerbehebung Ihrer Datenpipelines.
Lassen Sie uns ein paar Worte über Produkte, Konkurrenten von Apache Airflow und einige ihrer Vor- und Nachteile verlieren.
Ein Produkt aus den letzten Jahren ist Argo Workflows und der Hauptunterschied zwischen Airflow und Argo Workflow ist die Sprache, die Sie zum Schreiben Ihrer Datenpipelines verwenden können.
Während Sie bei Airflow Ihre Datenpipeline in Python schreiben können, sollten Sie bei Argo die Datenpipeline in einem YAML-Format schreiben. Hier ist eine Vergleichstabelle mit einigen anderen ähnlichen Produkten.

Welches sind die Kernkomponenten von Airflow und wie viele verschiedene Architekturen kann es geben?
Schauen wir uns die Kernkomponenten von Airflow und die verschiedenen Arten von Airflow-Architekturen an.
Jede Airflow 2.0-Bereitstellung sollte über die unten genannten Kernkomponenten verfügen. Je nachdem, welche Art von Architektur (ein Knoten oder mehrere Knoten) und welche Executor-Typen Sie wählen, werden die Kernkomponenten einen anderen Platz in den Knoten haben. Die wichtigsten Kernkomponenten von Airflow sind:
- Webserver - bietet Web-UI;
- Planer - plant Ihre Aufgaben, Pipelines und Arbeiter;
- Metastore - speichert Metadaten von Aufgaben - verwendet normalerweise PostgreSQL;
- Ausführender - Ein Ausführender ist eine Definition, wie Ihre Aufgabe ausgeführt wird;
- Warteschlange - Die Warteschlange legt die Reihenfolge fest, in der die Aufgaben ausgeführt werden. In der Ein-Knoten-Architektur ist sie Teil des Executors;
- Worker - Dies ist der eigentliche Prozess, wenn eine Aufgabe ausgeführt wird; er unterscheidet sich vom Executor.
Wenn Sie sich für die One-Node-Architektur entscheiden, werden die Kernkomponenten von Airflow in einem Knoten zusammengefasst. Außerdem wäre die Warteschlange ein Teil des Executors.

Wenn Sie sich für die Multi-Node-Architektur(mit dem Executor-Typ Celery) entscheiden, würden die Kernkomponenten von Airflow so organisiert sein, wie im folgenden Diagramm zu sehen. Im Wesentlichen sollten Sie Redis oder RabbitMQ für die Warteschlange verwenden (was nicht dasselbe ist wie die Datenbank, die Sie für den Metastore verwendet haben). Darüber hinaus ist es sinnvoll, Airflow Flower einzusetzen, das eine Web-UI zur Verwaltung der Worker Nodes und zur Anzeige des Status der einzelnen Aufgaben in der Warteschlange bietet.

Was ist der Hauptanbieter in Airflow und wie können Sie verschiedene Anbieter installieren?
Ein Provider ist ein unabhängiges Python-Paket, das alles enthält, was Sie für die Interaktion mit einem Dienst oder einem Tool wie Spark oder AWS benötigen. Er enthält verschiedene Verbindungstypen, Operatoren, Hooks usw. Auf der offiziellen Airflow-Dokumentationsseite finden Sie eine ausführliche Liste aller Airflow-Provider.
Was sind Luftstromantriebe - Typen und Merkmale
Nach und nach kommen wir zum Kern des Tools, und wir sind schon sehr nahe an der ersten Datenpipeline. Zuvor sollten wir einige der wichtigsten Komponenten, die Operatoren, besprechen.
Eine allgemeine Regel, die Sie sich merken können, lautet: "Jeder Operator definiert nur eine einzige Aufgabe in einer Datenpipeline".
Airflow hat drei Arten von Operatoren:
- Aktionsoperator - Dieser Typ führt а Funktion oder а Befehl aus. Zum Beispiel führt BashOperator einen Bash-Befehl und PythonOperator eine Python-Funktion aus;
- Transfer Operator - Der Transfer Operator kümmert sich um die Übertragung von Daten zwischen Quelle und Ziel;
- Sensor Operator - Der Sensor Operator wartet auf das Eintreten eines Ereignisses, bevor er zur nächsten Aufgabe übergeht.
Was sind Task und Task-Instanzen und was ist der Unterschied zwischen ihnen?
Der Hauptunterschied zwischen einem Task und einer Task-Instanz ist der folgende: Ein Task wird zu einer "Task-Instanz", wenn er zur Ausführung geplant wird.
- Ein Task ist gleich dem Operator in der Pipeline. Denken Sie immer an die Regel "Ein Operator definiert eine Aufgabe in der Datenpipeline";
- Aufgabeninstanz - Wenn die Ausführung einer Aufgabe zur Ausführung durch einen Operator geplant ist, wird sie zu einer Aufgabeninstanz.
Wie viele Executor-Typen gibt es in Apache Airflow?
Je nachdem, welche Airflow-Architektur Sie für Ihren Airflow-Einsatz verwenden, können Sie aus der folgenden Liste auswählen:
- SequentialExecutor ist der einfachste Executor-Typ für die sequentielle Ausführung Ihrer Aufgaben. Er wird nur zum Debuggen und Testen empfohlen.
- LocalExecutor führt mehrere Unterprozesse zur gleichzeitigen Ausführung Ihrer Aufgaben auf demselben Host aus. Er skaliert recht gut (durch vertikale Skalierung) und kann in der Produktion eingesetzt werden.
- CeleryExecutor ermöglicht es Ihnen, Ihren Airflow-Cluster horizontal zu skalieren. Sie führen Ihre Aufgaben auf mehreren Knoten (Airflow Worker) aus und jede Aufgabe wird zunächst in eine Warteschlange mit RabbitMQ oder Redis gestellt. Die gesamte Verteilung wird von Celery verwaltet. Dies ist die empfohlene Architektur für die Produktion, da sie in der Lage ist, höhere Arbeitsbelastungen zu bewältigen.
- DaskExecutor - Dask ist im Grunde ein weiteres verteiltes Python-Aufgabenverarbeitungssystem, genau wie Celery. Sie müssen sich entweder für Dask oder Celery entscheiden, je nachdem, welches Framework am besten zu Ihren Bedürfnissen passt.
- KubernetesExecutorDer relativ neue KubernetesExecutor ermöglicht es Ihnen, Ihre Aufgaben in Kubernetes auszuführen und so Ihren Airflow-Cluster entsprechend Ihrer Arbeitslast zu skalieren. Ein weiterer Vorteil ist, dass Sie nur die Ressourcen verwenden, die Sie benötigen.
Was ist ein gerichteter azyklischer Graph oder DAG?
Was wäre Apache Airflow ohne DAGs?
DAG (Directed Acyclic Graph) ist eine Datenpipeline, die eine oder mehrere Aufgaben ohne Schleifen enthält. Sie können getrennt oder voneinander abhängig sein. In der Abbildung unten sehen Sie, wie ein DAG aussieht und wie er sich von der Standard-Pipeline unterscheidet.

Übersicht über den Ausführungsprozess einer Aufgabe in Airflow (Ein-Knoten-Architektur)
In der Abbildung unten sehen Sie den End-to-End-Prozess - einen Überblick darüber, wie eine Aufgabe ausgeführt wird. Nach dem Hinzufügen einer neuen DAG-Datei in den DAGs-Ordner überwacht Airflow, ob neue DAGs vorhanden sind.

Was ist Xcoms und wie wird es verwendet?
XComs wird für die "Querkommunikation" verwendet und ermöglicht den Austausch einer kleinen Menge von Daten zwischen Aufgaben.
Die Datenmenge hängt davon ab, welche Art von Datenbank für den Metastore verwendet wird. Verwenden:
- SQLite, die Datenmenge ist auf 2 GB begrenzt;
- PostgreSQL - 1 GB;
- MySQL - 64 kB.
Welche sind die wichtigsten Konfigurationsparameter von Airflow?
Die wichtigsten Konfigurationsparameter von Airflow sind:
- Catchup (wenn TRUE) - DAGs haben eine Variable schedule_interval, die das Intervall bestimmt, in dem sie ausgeführt werden. Mit dem Parameter catchup wird ein DAG-Lauf für alle Intervalle geplant, die seit der letzten regelmäßig geplanten Ausführung nicht ausgeführt wurden (oder der Lauf wurde gelöscht);
- Parallelität (Standardwert ist 32) - bestimmt die maximale Anzahl von Aufgaben, die für eine gesamte Airflow-Instanz parallel ausgeführt werden können;
- DAG_concurrency (Standardwert ist 16) - maximale Anzahl von Aufgaben, die pro DAG-Lauf gleichzeitig ausgeführt werden können;
- MAX_ACTIVE_RUNS_PER_DAG (Standardwert ist 16) - maximale Anzahl von DAG-Läufen pro DAG;
Sie können diese Parameter konfigurieren, um eine bessere Leistung für Ihre Airflow-Instanz und Datenpipelines zu erzielen.
Schlussfolgerung
Wenn Sie eine Stelle als Data Engineer oder Data Scientist in Betracht ziehen, sollten Sie sich unbedingt mit Apache Airflow vertraut machen. Es ist ein großartiges Tool, mit dem Sie viel Zeit sparen, Prozesse beschleunigen und einen Mehrwert für Ihr Unternehmen schaffen können.
Wenn Sie das Schreiben von DAGs beherrschen und alle Best Practices lernen wollen, dann bleiben Sie dran für unseren nächsten ausführlichen Leitfaden über Apache Airflow in unserem Blog.
Autor:
Tihomir Gramov, DevOps-Ingenieur @ ITGix

