Jako jedno z najpopularniejszych open-source data pipeline management tools, Apache Airflow ma wielu użytkowników na całym świecie. Jest lubiany przez wielu, ale jak każde inne oprogramowanie, ma też swoje słabe strony. Aby utrzymać ten system na bieżąco i rozwiązywać niektóre problemy, zespół Airflow przeprowadza Community Surveys i pracuje nad nowymi wersjami oprogramowania. Niedawno pojawił się Airflow 2.0 z wieloma nowymi funkcjami, takimi jak bardziej wydajny scheduler. Osoby, które zdecydują się przejść na Airflow 2.0, szybko zauważą, że głównym obszarem zainteresowania zespołu Airflow był scheduler. Chociaż task execution w Airflow zawsze działało stosunkowo dobrze, poprawa jego wydajności była kluczowa dla osiągnięcia wyższej ogólnej wydajności całego systemu.
Ciekawi Cię, czym nowy scheduler w Airflow różni się od starego?
Apache Airflow scheduler — do czego służy?
Apache Airflow przeszedł transformację. Zespół Airflow dodał liczne nowe funkcje i poprawił wydajność różnych komponentów oprogramowania. Największe zmiany przeszedł scheduler. Jego zadaniem jest odczytywanie pipelines zadań, które są przedstawione jako DAGs — Directed Acyclic Graphs. Scheduler służy do planowania (scheduling) zadań zawartych w DAGs oraz monitorowania ich wykonania. Wyzwala także zadania, jeśli ich dependencies są spełnione.
Problem polega na tym, że uruchamianie setek zadań nie jest łatwe, a firmy korzystające z Airflow w produkcji nie mogą sobie pozwolić na opóźnienia. Korzystając z poprzedniej wersji Airflow, prawdopodobnie doświadczyłeś różnych problemów z DAG execution, takich jak opóźnienia w podjęciu zadań. Czasami scheduler crashował z nieznanych powodów, co prowadziło do tego, że zadania wisiały w stanie queued. Crashowanie schedulera było czasem spowodowane nawet bardzo krótką (kilkusekundową) przerwą w sieci — działo się tak, ponieważ w Airflow core nie było retry mechanism. Te problemy sprawiają, że horizontal scalability i availability schedulera są bardzo ważne dla użytkowników. Scheduler musi także planować i wykonywać zadania tak szybko i wydajnie, jak to możliwe, nie pomijając zadań podczas replikacji schedulera.
Jak zespół Airflow rozwiązał te wyzwania?
Airflow scheduler w wersji 2.0
Zespół Airflow z pewnością odniósł sukces w optymalizacji wykorzystania zasobów. Scheduler działa teraz znacznie szybciej bez wzrostu zużycia CPU czy pamięci. Scheduler działa w trybie independent, więc gdy system korzysta z więcej niż jednego schedulera, nie ma żadnego downtime. Wydajność przy wykonywaniu wielu DAGs w trybie parallel została znacząco poprawiona.
Chcesz dowiedzieć się więcej? Skupmy się na szczegółach.
Multiple schedulers in the Active Model
Airflow 2.0 pozwala użytkownikom korzystać z wielu schedulers. Każdy z nich jest “active” i może obsługiwać liczne zadania, w tym te niezwiązane bezpośrednio z scheduling, takie jak monitoring task execution, task error handling itd. Wszystkie uruchomione schedulers mają dostęp do tej samej relational database. Gdy jeden z schedulers wybierze DAG do przetworzenia z bazy danych, blokuje go dla pozostałych schedulers. Po zakończeniu przetwarzania DAG jest zwalniany.
Horizontal Scalability
Posiadanie wielu schedulers w active model pozwala Airflow 2.0 osiągnąć horizontal scalability. Jeśli obciążenie jednego schedulera jest zbyt duże, możesz skalować Airflow poziomo, wykorzystując wiele schedulers na różnych nodes. Jeśli nie są już potrzebne, możesz zmniejszyć liczbę schedulers, aby zminimalizować zużycie zasobów. Schedulers są identyczne, więc nie ma negatywnych skutków skalowania w dół.
Zero recovery time i brak crashujących schedulers
Active model w schedulerze Airflow 2.0 oznacza zero downtime i brak recovery time w przypadku awarii schedulera. Dzieje się tak dzięki innym w pełni aktywnym schedulers, które przejmują operacje, gdy jeden z nich crashuje. Oczywiście throughput może się nieco zmniejszyć, bo więcej pracy zostaje dla pozostałych schedulers, ale nie ma potrzeby recovery.
Każdy scheduler niezależny
Utrzymanie złożonego oprogramowania jak Apache Airflow nie jest łatwe, ale jego bezproblemowe działanie jest bardzo ważne, bo często jest częścią większego systemu. Instalowanie niezbędnych patchy i aktualizacji jest kluczowe. Bezpieczeństwo całego systemu od tego zależy. W nowym Airflow 2.0 aktualizacja jednego schedulera nie wpływa na wydajność pozostałych.
Ogólna optymalizacja schedulera
Nowa wersja Airflow wprowadza ciekawą funkcję “fast-follow”, która czyni scheduler bardziej wydajnym. Co to jest? Niektórzy opisują to jako “mini-scheduler” w workers. Po zakończeniu zadania w Airflow Worker, system sprawdza, czy w tym samym DAG jest kolejne zadanie do wykonania. Jeśli tak, obecny worker pobiera je i wykonuje od razu. Nie trzeba już planować follow-on task do worker. Skraca to czas przetwarzania i zwiększa wydajność.
Instalacja i personalizacja Airflow 2.0
Apache Airflow przeszedł znaczącą transformację, a rodzaj zmian wprowadzonych przez zespół Airflow sugeruje, że system ten z czasem będzie odpowiedni dla różnych projektów. Zastanów się nad potrzebami swojej firmy i odpowiedz sobie, czy to elastyczne oprogramowanie będzie dobre dla Twoich przyszłych przedsięwzięć biznesowych.
Oferujemy pomoc i doradztwo przy instalacji Airflow 2.0 oraz możemy skonfigurować go zgodnie z wymaganiami Twojej organizacji. Możemy także przygotować i przeprowadzić szkolenie z Airflow 2.0 dla Twojego zespołu, aby Twoi pracownicy mogli jak najszybciej wykorzystać nowe funkcje. Skontaktuj się z nami po więcej informacji.
Python: sprawdzanie kodu w IDE + Github.
Rest api w airflow 2-0 co musisz wiedziec
Airflow 2-0 poprawa wydajnosci z smart sensors