Różnice między Airflow 1.10.x a 2.0.

Pawel Budzyn
Pawel Budzyn
May 29, 2025
9 min read
Loading the Elevenlabs Text to Speech AudioNative Player...

Apache wydał nową wersję Airflow. Każdy, kto korzysta z tego narzędzia, wie, że nawet drobne zmiany mogą całkowicie zmienić sposób działania DAG-ów lub całkowicie je zablokować. Apache Airflow w wersji 2.0 nie jest jeszcze dostępny na platformach chmurowych, ale Data Pipeline to nasza domena, więc recenzujemy nowości. Poniżej opisujemy nasze pierwsze wrażenia i zmiany, na które warto się przygotować w głównej wersji.

Comparison table of features and capabilities between Azure Data Factory and Apache Airflow

Airflow 2.0 już jest – największe różnice między Airflow 1.10.x a 2.0

Nowy interfejs użytkownika, Airflow

Airflow 2.0 otrzymał zupełnie nowy wygląd oparty na module Flask app builder, więc teraz, dzięki nowemu dashboardowi, łatwiej jest znaleźć potrzebne informacje i nawigować po swoich DAG-ach. W tej wersji pojawiły się dodatkowe filtry ułatwiające wyszukiwanie konkretnych diagramów i wyświetlanych tagów.

2. Differences between Airflow 1.10.x and 2.0

Correlation heatmap showing relationships between numeric columns in a dataset.

Ekran Dag Run również zyskał nowy układ z dodatkowymi informacjami, takimi jak „Run type”, „External Trigger” czy informacje o zastosowanej konfiguracji.

Na ekranie zadania znajdziesz pole z sekcją dokumentacji, co może być bardzo pomocne w przekazywaniu wiedzy z fazy developmentu do fazy wsparcia. Pojawił się także bardzo przydatny przełącznik „Auto-refresh” na ekranie DAG. Jeśli monitorujesz wykonanie kodu na wykresie, możesz go włączyć i skupić się na innych zadaniach.

Jeśli tworzysz bardzo złożony DAG z wieloma zadaniami, możesz agregować zadania w logiczne grupy. To rozwiązanie pomaga zidentyfikować, na którym etapie proces się zatrzymał. Pomyśl, jak trudno byłoby określić, w którym kroku proces ETL się nie powiódł, jeśli Twój DAG ma setki zadań. Teraz możesz grupować je w sekcje, a nawet zagnieżdżać sekcje w sekcjach, by łatwiej znaleźć problematyczną grupę logiczną.

Correlation heatmap showing relationships between numeric columns in a dataset.
Image 1: "Comparison table showing features and capabilities of Azure Data Factory and Apache Airflow.

Czasem nawet zespół programistów stosujący standardy kodowania ma trudność ze znalezieniem, gdzie wykorzystywane są połączenia. Nowa wersja Airflow, oprócz dodania nowych typów połączeń, posiada także pole opisu, które ułatwia identyfikację, do czego dane połączenie służy.

Failed Python test code snippet showing an error due to incorrect input type.

Kolejną ciekawą częścią są „plugins” dostępne w menu „Admin”. Ta strona dostarcza informacji o zainstalowanych pluginach. Może nie jest to pełny silnik zarządzania pluginami, ale oferuje informacje o zainstalowanych rozszerzeniach i pomaga programistom zidentyfikować konflikty, jeśli nie mają dostępu administracyjnego do systemu.

Azure Data Factory vs Apache Airflow logos side by side for comparison.

Airflow jest coraz częściej wykorzystywany jako komponent większych systemów. Jeśli rozważasz integrację swojego systemu z Airflow, wiedz, że obecnie masz do dyspozycji dobrą dokumentację API. Używasz Swaggera? Proszę bardzo. Nie znasz Swaggera, ale znasz Redoc? Nie ma problemu. Nowa wersja Airflow zapewnia dobrze udokumentowane API dla obu komponentów. Dzięki temu możesz korzystać z Airflow bez części interfejsu użytkownika.

Successful Python test result displayed in the console after running Pytest.
Correlation heatmap showing relationships between numeric columns in a dataset.

Przeprojektowany scheduler, Airflow

W poprzednich wersjach mogłeś doświadczyć problemów z wykonywaniem wielu DAG-ów z powodu błędów schedulera, np.:

  • opóźnienia w podjęciu zadania (lag przy przełączaniu z jednego zadania na kolejne),
  • problemy z retry lub dystrybucją do workerów.

Scheduler to kluczowa funkcjonalność Apache Airflow. W drugiej wersji skupiono się na poprawie kluczowych elementów, by zredukować opóźnienia i umożliwić uruchamianie wielu schedulerów jednocześnie (horizontal scaling) bez utraty zadań podczas replikacji schedulera. Nowa wersja optymalizuje także zużycie zasobów – scheduler działa szybciej bez zwiększania zużycia CPU czy pamięci. Wersja 2.0 zapewnia manifest High-Availability, więc jeśli system używa więcej niż jednego schedulera, oczekujemy zerowych przestojów. Jest to możliwe, ponieważ każdy scheduler działa w trybie niezależnym.

To rozwiązanie poprawia wydajność wykonywania wielu DAG-ów równolegle; w niektórych testach wydajność wzrosła dziesięciokrotnie.

Screenshot of the connection description field in Apache Airflow 2.0 for easier identification of connection purposes.

REST API

Airflow może być teraz pełnoprawnym narzędziem do zarządzania. Dzięki REST API możesz sprawdzać wszystkie DAG-i, uruchamiać je i zarządzać instancjami zadań. To tylko niewielka część możliwości tego API. Pozwala ono dodawać nowe połączenia, ale także je listować. API dostarcza informacji o istniejących połączeniach, więc możesz wykorzystać to w innych systemach. Możliwe jest odczytywanie zmiennych przechowywanych w Airflow lub wyników XCom, więc możesz śledzić wyniki niektórych zadań podczas przetwarzania DAG-a. Oczywiście możesz także łatwo kontrolować wykonanie DAG-ów, w tym uruchamianie DAG run z określoną konfiguracją lub przeglądać prostą reprezentację DAG-a.

Smart Sensor

Airflow 2.0 oferuje rozszerzony operator Sensor o nazwie SmartSensor operator. SmartSensor operator potrafi sprawdzać status zadań w trybie batch i przechowywać informacje o tym sensorze w bazie danych. Poprawia to wydajność i rozwiązuje wcześniejsze problemy z obciążeniem sensorów.

DAG Versioning

Poprzednia wersja Airflow pozwalała dodawać nowe zadania do istniejącego DAG-a, ale miało to niepożądane skutki, takie jak osierocone zadania (tasks without status) w DagRun, co oznaczało, że mogłeś znaleźć zadania dodane w nowej wersji DAG-a w poprzednim wykonaniu. Dlatego mogły pojawić się problemy z przeglądaniem logów lub kodu przypisanego do aktualnego DagRun. W wersji 2.0 pojawiło się dodatkowe wsparcie dla przechowywania wielu wersji zserializowanych DAG-ów, poprawnie pokazując relacje między DagRun a DAG-ami.

DAG Serialization

Nowa wersja zmieniła sposób, w jaki serwer systemowy parsuje DAG-i. W poprzedniej wersji WebServer i Scheduler musiały mieć dostęp do pliku DAG. W nowej wersji Airflow tylko scheduler potrzebuje dostępu do pliku DAG, a do parsowania DAG-ów wystarczy dostęp do Metadata Database, a Web Server potrzebuje tylko dostępu do metadanych. Z tej zmiany wynika:

  • High availability dla schedulera
  • DAG versioning
  • Szybsze wdrażanie DAG-ów
  • Lazy DAG loading
  • Web server jest teraz stateless

Nowy sposób definiowania DAG-ów

Nowa wersja oferuje nowy sposób definiowania DAG-ów z użyciem TaskFlow API. Teraz możesz używać dekoratorów Pythona do definiowania swojego DAG-a.

W odniesieniu do powyższego przykładu, możesz szybciej pisać proste DAG-i w czystym Pythonie z czytelnym zarządzaniem zależnościami. XCom push jest także łatwiejszy w użyciu. Dodatkowo nowa wersja oferuje dekoratory zadań i obsługuje własny backend XCom.

Co jeszcze?

Airflow 2.0 nie jest monolitem. Został podzielony na core i 61 pakietów providerów. Każdy z tych pakietów jest przeznaczony dla konkretnej usługi zewnętrznej, bazy danych (MySQL, Postgres) lub protokołu (HTTP/FTP). Dzięki temu możesz wykonać customową instalację Airflow i zbudować narzędzie zgodnie z własnymi wymaganiami.

Dodatkowo zyskujesz:

  • Rozszerzone wsparcie dla Kubernetes Executor
  • Plugin manager
  • KEDA Queues

Stream processing vs batch processing- przewodnik

Cloud backup services jak wybrac najlepsza opcje

Najlepszy cloud storage- dla biznesu w 2021

Share this post
Nauka o danych
Pawel Budzyn
MORE POSTS BY THIS AUTHOR
Pawel Budzyn

Curious how we can support your business?

TALK TO US