Strona korzysta z plików cookies w celu realizacji usług i zgodnie z Polityką Plików Cookies.



05.09.2022

Łatwiejsza migracja do chmur

Commvault i Oracle rozszerzyły partnerską współpracę i wspólnie oferują rozwiązanie...
01.09.2022

Badanie sieci

QNAP ogłosił wprowadzenie oprogramowania ADRA Network Detection and Response (NDR) dla...
01.09.2022

5G w Polsce

Z badania Kearney 5G Readiness Index 2022 wynika, że Polska jest jednym z najgorzej...
01.09.2022

Zarządzanie działaniami

Fortinet zaprezentował chmurową usługę, która koreluje informacje dotyczące...
01.09.2022

Selektywna rejestracja

Naukowcy z UCLA przedstawili projekt inteligentnej kamery, która pozwala wybrać, jaki...
01.09.2022

Więcej mocy, komputer...

Profesjonalny komputer Dell Precision 7865 Tower z AMD Ryzen Threadripper PRO 5000...
01.09.2022

Rekord prędkości

Firma Aorus zapowiada superszybki dysk, następcę modelu Gen4 7000s SSD, który ma oferować...
01.09.2022

Beprzewodowe drukowanie

Firma Brother wprowadziła do swojego portfolio nowe urządzenie wielofunkcyjne z systemem...
01.09.2022

Obraz dobrze zaprogramowany

Monitor interaktywny Lyra to połączenie Androida 11, szyby antybakteryjnej, wbudowanego...

Zadania Apache Airflow – tworzenie i zarządzanie

Data publikacji: 01-09-2022 Autor: Grzegorz Adamowicz

Procesy, automatyzacja i zarządzanie zadaniami są zwykle domeną zespołów DevOps, inżynierów lub administratorów systemów. W bardziej rozwiniętych organizacjach zajmują się tym również zespoły programistów, inżynierów danych lub data science, które tworzą głównie modele uczenia maszynowego.

 

Każdy z wymienionych zespołów patrzy na kwestię zarządzania zadaniami ze swojej perspektywy, używając najmocniejszych umiejętności charakteryzujących członków tych działów. Członek DevOps mógłby stworzyć nowe zadanie w istniejącej instancji serwera CI/CD takiego jak Jenkins (jenkins.io), programistka zintegruje zadanie wewnątrz aplikacji, którą właśnie rozwija, natomiast członkini zespołu zajmującego się uczeniem maszynowym użyje istniejącego rozwiązania w modelu SaaS, np. Metaflow (metaflow.org).


Problemy powstają, gdy jeden zespół musi zmodyfikować rozwiązanie innego na potrzeby swoje lub organizacji. Takim wspólnym mianownikiem może stać się właśnie Apache Airflow niosący dodatkowe benefity w postaci intuicyjnego interfejsu WWW, którego mogą również używać osoby nietechniczne. Może nią być sprzedawca, który potrzebuje raportu o wydajności naszego rozwiązania do prezentacji dla klienta, lub ktoś z kierownictwa, kto potrzebuje danych o liczbie użytkowników i ich aktywności. Zespół zajmujący się ML ponadto będzie mógł trenować swoje modele, DevOps uruchamiać zadania cykliczne, takie jak wykonywanie kopii bezpieczeństwa, a programiści będą mogli oddzielić zadania, które nie powinny być wykonywane w głównym wątku aplikacji. Każde z tych wyzwań może być rozwiązane w łatwy sposób za pomocą języka Python, a ich wykonanie „zlecone” w panelu WWW Airflow.


> Wnętrze Apache Airflow


Sposób działania Airflow jest oparty na skierowanych grafach acyklicznych (ang. Directed Acyclic Graph, DAG). Wykres grafu tworzą wierzchołki i krawędzie. Krawędzie łączą pary wierzchołków, przy czym wierzchołkami mogą być dowolne obiekty połączone parami krawędziami. W przypadku grafu skierowanego każda krawędź ma orientację od jednego z wierzchołków do innego.


W tej konkretnej implementacji służą one do priorytetyzacji zadań i kolejności ich wykonania. Domyślnie zadania czekają, aż zadania nadrzędne zostaną zakończone. Jakie są zależności między zadaniami, możemy określić w kodzie podczas ich tworzenia. Każde uruchomienie zestawu zadań DAG jest niezależne i możemy wywołać kilka takich zadań w tym samym czasie, ale z różnymi danymi. Mamy również możliwość tworzenia podgrafów (SubDAGs), których będziemy mogli używać w innych grafach – pozwoli nam to lepiej zorganizować kod dla bardziej złożonych zadań.


W Apache Airflow możemy wyróżnić trzy podstawowe obiekty:

 

  • TaskFlow – skrypt języka Python, w którym implementujemy zadanie, używając funkcji oznaczających zadanie (dekoratory w języku Python);
  • Operators – predefiniowane zadania, które można ze sobą łączyć;
  • Hooks – predefiniowane zasoby zewnętrzne, z których mogą skorzystać Operatory;
  • Sensors – jest to Operator, który czeka na wystąpienie predefiniowanych zdarzeń.

 

Operatory są elementami składowymi Airflow – definiują sposób działania zadań i ich implementację. TaskFlow i Operator są czasami używane zamiennie, ale traktujemy je jako oddzielne koncepcje. Natomiast Operatory i Sensory służą jako szablony do tworzenia TaskFlow.


> Integracja z innymi systemami


Komponenty Airflow umożliwiające nam łączenie się z zewnętrznymi systemami pozwolą na łatwiejszy dostęp do danych, które chcemy przetworzyć, i wybrać, w jaki sposób zapisać wyniki. Większość z tych komponentów będziemy mogli konfigurować za pomocą interfejsu użytkownika w postaci aplikacji WWW.


Aby połączyć się z bazą danych lub odwołać do danych w chmurze (na przykład ściągnąć plik z usługi AWS S3), potrzebujemy zestawu sekretów albo nazwy użytkownika i hasła, kluczy API lub tokena upoważniającego nas do dostępu. Przeznaczona do zarządzania tymi wrażliwymi danymi jest opcja Connections. Po dodaniu nowego połączenia i związanych z nim sekretów system szyfruje je i zapisuje w wybranej przez nas bazie danych (MySQL, MSSQL, SQLite lub PostgreSQL) do przechowywania metadanych.


Dostawcy (ang. Providers) to komponenty, które bezpośrednio będą używać zdefiniowanych wcześniej połączeń. Są to moduły rozwijane przez społeczność i zainstalowane zwykle w systemie razem z Airflow. Są nimi komponenty takie jak Operators (operatory) i Hooks (wyzwalacze), które ułatwiają nam dostęp do chmury Amazonu, Google’a czy Microsoftu, ale też takich systemów jak Asana (do zarządzania zadaniami), Elasticsearch (system do indeksowania i wyszukiwania informacji) czy nawet SSH. Wszystkie dostępne integracje znajdują się na stronie bit.ly/3CnrkSv.


Wyzwalacze (ang. Hooks) ułatwiają dostęp do zasobów, które skonfigurowaliśmy opcją Connections. Co prawda możemy napisać w DAG kawałek kodu, który zainicjuje połączenie, np. do bazy danych, ale wyzwalacze oszczędzą nam sporo czasu, który będziemy mogli spożytkować na implementację zadań, a do połączenia z przykładową bazą użyjemy po prostu identyfikatora połączenia.


Operatory (ang. Operators) to w ogólnym ujęciu kawałki kodu, których możemy użyć. Definiują one zadanie lub określają czynności, które należy wykonać na każdym kroku. Może to być wykonanie zadania SQL lub wysłanie maila.


> Środowisko testowe Airflow


Skoro znamy już bazowe komponenty Apache Airflow, możemy przyjrzeć się bliżej temu, w jaki sposób możemy go uruchomić i jak wygląda interfejs użytkownika. Apache Airflow możemy zainstalować na kilka sposobów:

 

  • użyć oficjalnego repozytorium i zbudować serwer ze źródeł;
  • zainstalować Apache Airflow z pakietu dostępnego w PyPi, czyli wcześniej zbudowaną paczkę z serwisem;
  • użyć oficjalnych obrazów Dockera.


O ile każdy z tych sposobów jest dobry, o tyle najszybszą opcją będzie użycie obrazów systemu Docker razem z obrazami PostgreSQL i Celery, których wymaga Airflow. Żeby wszystko razem spiąć w jeden spójny system, najlepiej użyć również narzędzia docker-compose. W środowisku produkcyjnym w sytuacji, gdy w naszej organizacji używamy już Kubernetes, możemy również rozważyć użycie narzędzia Helm. Wyczerpująca dokumentacja Airflow na temat każdej z opcji instalacji dostępna jest pod adresem bit.ly/3KiQUdt.

 

[...]

 

Autor jest doświadczonym inżynierem systemów. Specjalizuje się w automatyzacji procesów i monitoringu aplikacji rozproszonych. Propagator ruchu open source. Freelancer i organizator wydarzeń związanych z IT.

Pełna treść artykułu jest dostępna w papierowym wydaniu pisma.

prenumerata Numer niedostępny Spis treści

.

Transmisje online zapewnia: StreamOnline

All rights reserved © 2019 Presscom / Miesięcznik \"IT Professional\"