Als eines der beliebtesten open-source data pipeline management tools hat Apache Airflow weltweit viele Nutzer. Es wird von vielen geschätzt, aber wie jede andere Software hat es auch einige Schwachstellen. Um das System aktuell zu halten und Probleme zu lösen, führt das Airflow-Team Community Surveys durch und arbeitet an neuen Softwareversionen. Kürzlich wurde Airflow 2.0 mit vielen neuen Features veröffentlicht, wie z. B. einem effizienteren scheduler. Wer sich für den Umstieg auf Airflow 2.0 entscheidet, wird schnell feststellen, dass der Hauptfokus des Airflow-Teams auf dem scheduler lag. Obwohl die task execution in Airflow immer relativ gut war, war die Verbesserung der Effizienz entscheidend, um die Gesamtleistung des Systems zu steigern.
Bist du neugierig, wie sich der neue Airflow scheduler vom alten unterscheidet?
Apache Airflow scheduler — wofür ist er da?
Apache Airflow wurde transformiert. Das Airflow-Team hat zahlreiche neue Features hinzugefügt und die Performance verschiedener Komponenten verbessert. Die größte Veränderung betraf den scheduler. Seine Aufgabe ist es, die Pipelines von Aufgaben zu lesen, die als DAGs — Directed Acyclic Graphs — dargestellt werden. Er wird verwendet, um die tasks innerhalb der DAGs zu planen (scheduling) und deren Ausführung zu überwachen. Außerdem löst er tasks aus, wenn deren dependencies erfüllt sind.
Das Ausführen von Hunderten von tasks ist nicht einfach, und Unternehmen, die Airflow produktiv einsetzen, können sich keine Verzögerungen leisten. Mit der vorherigen Version von Airflow hast du wahrscheinlich verschiedene Probleme bei der DAG execution erlebt, wie z. B. Verzögerungen beim Aufnehmen von tasks. Manchmal ist der scheduler aus unbekannten Gründen abgestürzt, was dazu führte, dass tasks im queued state hängen blieben. Das Crashen des schedulers wurde manchmal auch durch sehr kurze (einige Sekunden) Netzwerkausfälle verursacht — das passierte, weil es im Airflow core keinen retry mechanism gab. Diese Probleme machen horizontal scalability und availability des schedulers für die Nutzer sehr wichtig. Der scheduler muss tasks so schnell und effizient wie möglich planen und ausführen, ohne tasks zu verpassen, wenn scheduler replication im Gange ist.
Wie hat das Airflow-Team diese Herausforderungen gelöst?
Airflow scheduler in Version 2.0
Das Airflow-Team hat es definitiv geschafft, die Ressourcennutzung zu optimieren. Der scheduler arbeitet jetzt viel schneller, ohne dass CPU- oder Speicherverbrauch steigen. Der scheduler läuft im independent mode, sodass es bei Verwendung mehrerer scheduler im System keinen downtime gibt. Die Performance bei der parallelen Ausführung vieler DAGs wurde deutlich verbessert.
Möchtest du mehr erfahren? Schauen wir uns die Details an.
Multiple schedulers im Active Model
Airflow 2.0 ermöglicht es Nutzern, mehrere schedulers zu verwenden. Jeder von ihnen ist “active” und kann zahlreiche Aufgaben übernehmen, auch solche, die nicht direkt mit scheduling zu tun haben, wie task execution monitoring, task error handling usw. Alle laufenden schedulers haben Zugriff auf dieselbe relational database. Sobald einer der schedulers einen DAG aus der Datenbank auswählt, blockiert er ihn für die anderen schedulers. Nach der Verarbeitung wird der DAG wieder freigegeben.
Horizontal Scalability
Mit mehreren schedulers im active model erreicht Airflow 2.0 horizontal scalability. Wenn die Last auf einem scheduler zu groß ist, kannst du Airflow horizontal skalieren, indem du mehrere schedulers auf verschiedenen nodes einsetzt. Wenn du sie nicht mehr benötigst, kannst du die Anzahl der schedulers reduzieren, um Ressourcen zu sparen. Die schedulers sind identisch, daher gibt es keine negativen Effekte beim Herunterskalieren.
Zero recovery time und keine abgestürzten schedulers
Das active model im Airflow 2.0 scheduler führt zu zero downtime und keiner recovery time im Falle eines scheduler-Ausfalls. Das liegt daran, dass die anderen voll aktiven schedulers weiterlaufen und die Aufgaben übernehmen, wenn einer ausfällt. Natürlich wird der Durchsatz wahrscheinlich etwas sinken, da mehr Arbeit für die verbleibenden schedulers bleibt, aber es ist keine recovery nötig.
Jeder scheduler unabhängig
Die Wartung komplexer Software wie Apache Airflow ist nicht einfach, aber ein reibungsloser Betrieb ist sehr wichtig, da es oft Teil eines größeren Systems ist. Das Installieren notwendiger Patches und Updates ist jedoch entscheidend. Die Sicherheit des gesamten Systems hängt davon ab. Im neuen Airflow 2.0 wirkt sich das Aktualisieren eines schedulers nicht auf die Performance der anderen aus.
Gesamtoptimierung des schedulers
Die neue Version von Airflow bringt das interessante Feature “fast-follow”, das den scheduler effizienter macht. Was ist das? Manche beschreiben es als “mini-scheduler” in den workers. Nachdem ein task in einem Airflow Worker abgeschlossen ist, prüft das System, ob es im selben DAG einen weiteren task gibt, der ausgeführt werden kann. Falls ja, übernimmt der aktuelle worker diesen und führt ihn sofort aus. Es ist nicht mehr nötig, den follow-on task an einen worker zu planen. Die Verarbeitungszeit wird verkürzt und die Effizienz steigt.
Airflow 2.0 Installation und Anpassung
Apache Airflow hat eine bedeutende Transformation durchlaufen, und die Art der vom Airflow-Team vorgenommenen Änderungen deutet darauf hin, dass dieses System mit der Zeit für verschiedene Projekte geeignet sein wird. Überlege, welche Bedürfnisse dein Unternehmen hat, und frage dich, ob diese flexible Software für deine zukünftigen Geschäftsprojekte geeignet ist.
Wir bieten Unterstützung und Beratung bei der Installation von Airflow 2.0 und können es entsprechend den Anforderungen deiner Organisation konfigurieren. Wir können auch ein Airflow 2.0 Training für dein internes Team vorbereiten und durchführen, damit deine Mitarbeiter die neuen Features so schnell wie möglich nutzen können. Kontaktiere uns für weitere Informationen.
Airflow 2-0 leistungsverbesserung mit smart sensors
Rest api in airflow 2-0 was sie wissen mussen
Python: Code-Prüfung in IDE + Github.