Jak obrócić do 1000 równoległych zadań Airflow 2.0 w 5 minut z niczego za pomocą CeleryExecutor i Kubernetes

Michal Milosz
Michal Milosz
May 7, 2025
9 min read
Loading the Elevenlabs Text to Speech AudioNative Player...

Nowa wersja Airflow umożliwia użytkownikom wydajniejsze zarządzanie przepływem pracy. Opisaliśmy szczegółowo niektóre zmiany w naszych artykułach i możemy zapewnić o ulepszonej wydajności. Możliwość wykonywania zadań równoległych przez Apache Airflow, zapewniona za pomocą Kubernetes i Celery Executor, pozwala zaoszczędzić sporo czasu. Możesz go użyć do wykonania nawet 1000 równoległych zadań w zaledwie 5 minut. Czy jesteś już zaintrygowany?

Wprowadzenie

Airflow to popularne oprogramowanie do zarządzania przepływem pracy do tworzenia programów, planowania zadań i monitorowania przepływu pracy. Ma swoje własne możliwości i ograniczenia. Czy można uruchomić 1000 zadań równoległych w Airflow? Jak można się domyślić - tak! W takim przypadku na ratunek przychodzi Selery Executor. Airflow oferuje wielu wykonawców, ale do wielu zadań dobrze jest użyć Selery Executor. W tym ćwiczeniu wykorzystano części naszego najnowszego produktu opartego na usłudze Airflow 2.0, która jest aktywnie rozwijana przez DS Stream (dlatego nie możemy podać pełnego kodu do odtworzenia zadania). Jeśli jesteś zainteresowany szczegółami, proszę skontaktuj się z sprzedażą. Wkrótce więcej szczegółów na temat tego projektu będzie również dostępne na nasza strona internetowa.

Wykonawca selera

Zacznijmy od wyjaśnienia, czym jest executor w systemie Airflow. Jest to mechanizm, za pomocą którego realizowane są zaplanowane zadania. Pracownik jest procesorem lub węzłem, który uruchamia rzeczywiste zadanie. Mówiąc o równoległych zadaniach Apache Airflow, musimy pamiętać, że sam Airflow nie wykonuje żadnych zadań. Po prostu przekazuje je wykonawcy, który jest następnie odpowiedzialny za uruchomienie tego zadania z najlepszym wykorzystaniem dostępnych zasobów. Seler to asynchroniczna kolejka zadań. Jest w stanie rozdzielić zaplanowane zadania wielu pracownikom selera. Kiedy więc używamy Selery Executor w konfiguracji Airflow, obciążenie pracą jest rozdzielane między wielu pracowników selera korzystających z brokera wiadomości (np. RabbitMQ lub Redis). Wykonawca publikuje prośbę o wykonanie zadania w kolejce, a jeden z kilku pracowników otrzymuje żądanie i wykonuje je. RabbitMQ to program brokerski wiadomości typu open source. Zapewnia właściwy podział pracy między pracownikami oraz udaną komunikację między wykonawcą a pracownikami. Ostatnim krokiem w prawidłowej konfiguracji Selery Executor jest użycie zewnętrznej bazy danych, takiej jak PostgreSQL. Pozwala to na planowanie zadań i przetwarzanie w czasie rzeczywistym. Baza danych jest zdalnym wykonawcą i może być używana do skalowania poziomego, gdzie pracownicy są rozłożeni na wielu maszynach w rurociągu.

properly configuring Celery Executor

Konfigurowanie przepływu powietrza — zadania równoległe

Będziemy uruchamiać nasz system na Kubernetes Service na platformie Microsoft Azure. Aby to zrobić, skonfiguruj obraz Dockera, który będzie używany w konfiguracji Przepływ powietrza. Podczas jego tworzenia używamy obrazu apache/ airlfow w wersji 2.1.4, dostępnego pod adresem https://hub.docker.com. Kod Dockerfile znajduje się poniżej:

W app/folderze znajduje się folder dags/ zawierający wszystkie DAG i plik airflow.cfg, który służy do konfigurowania konfiguracji przepływu powietrza. Plik szablonu airflow.cfg jest dostępny w githubie Airflow. Oto najważniejsze parametry, które należy ustawić, aby móc uruchomić 1000 równoległych zadań za pomocą Selery Executor:

  • executor = CeleryExecutor
  • work_concurrency = 36 <- ta zmienna określa, ile zadań można uruchomić równolegle na jednym pracowniku (w tym przypadku będzie używanych 28 pracowników, więc potrzebujemy 36 zadań równoległych - 28 * 36 = 1008)
  • równoległość = 1000 <- umożliwia równoległe uruchamianie 1000 zadań
  • max_active_tasks_per_dag = 1000 <- umożliwia uruchamianie 1000 zadań równolegle dla jednego DAG
  • max_queued_runs_per_dag = 1000 <- pozwala na równoległe kolejkowanie 1000 zadań w DAG

Następnie musimy utworzyć jeszcze 4 pliki yaml, które utworzą niezbędne wdrożenia, usługi i ConfigMaps w Kubernetes:

  • nazwespace.yaml
  • postgres.yaml
  • przepływ powietrza.yaml
  • seler.yaml

W następnym kroku musisz przygotować środowisko Kubernetes na platformie Azure (utworzyć klaster i zbudować obraz na podstawie wcześniej przygotowanego pliku Dockerfile)

po tym kroku wszystko, co musisz zrobić, to utworzyć wszystkie wdrożenia w klastrze za pomocą kubectl i przygotowanych plików yaml

Bum! Po kilku minutach mamy skonfigurowaną konfigurację Airflow, która pozwoli na jednoczesne uruchomienie 1000 zadań! Powinniśmy uzyskać potwierdzenie tego faktu po uruchomieniu polecenia”kubectl --namespace=przepływ powietrza pobierz wszystko”:

DAG stworzony dla tego przykładu jest przeznaczony do spania przez 100 sekund

Uruchamianie zadań równoległych przepływu powietrza — konfiguracje testowe

Wreszcie pozostaje tylko sprawdzić, czy zadania rozpoczynają się poprawnie. W tym celu uruchamiamy naszą próbkę DAG:

Wniosek

Cieszymy się, że mogliśmy udzielić Ci kilku wskazówek dotyczących konfiguracji Airflow. Możesz skorzystać z biegania Przepływ powietrza Apache równoległe zadania płynnie, zgodnie z naszymi radami. Właśnie udowodniliśmy, że możliwe jest stworzenie konfiguracji Airflow w krótkim czasie, co pozwoli Ci wykonać nawet 1000 zadań równoległych! To jest coś! Oznacza to, że Airflow może być używany zarówno do małych, mało wymagających projektów, jak i znacznie większych, osiągających setki, a nawet tysiąc zadań. W jaki sposób Airflow może pomóc Twojej firmie? Odwiedź nasze Automatyzacja rurociągu danych strona i znajdź rozwiązanie, które odpowiada Twoim potrzebom. Cały proces uruchamiania Airflow zostanie zautomatyzowany przez naszą aplikację, co pozwoli Ci skonfigurować całą infrastrukturę jednym kliknięciem. W jego budowie wykorzystano nowoczesne koncepcje i technologie, takie jak CI/CD, Terraform czy Kubernetes. Aby uzyskać więcej informacji — skontaktuj się z nami sprzedaje.

Dowiedz się więcej o Airflow 2.0:

Share this post
DevOps
Michal Milosz
MORE POSTS BY THIS AUTHOR
Michal Milosz

Curious how we can support your business?

TALK TO US