Apache Airflow alapok
Apache Airflow egy nyílt forráskódú munkafolyamat-ütemező és -kezelő eszköz, amely lehetővé teszi összetett adatfolyamatok (DAG – Directed Acyclic Graph) létrehozását, ütemezését és felügyeletét. Fő célja az adatintegrációs, adattranszformációs és adatfeldolgozási feladatok automatizálása.
A DAG-ok lehetővé teszik a felhasználók számára, hogy megjelenítsék a feladatokat és azok függőségeit, biztosítva a feladatok pontos sorrendben történő végrehajtását, a hibák kezelését és az újrapróbálkozásokat automatikusan. Mivel a DAG-ok Python nyelven készültek, dinamikusak és skálázhatók, így az Airflow az egyszerű automatizálási feladatoktól a hatalmas adatmunkafolyamatokig sokféle alkalmazásra alkalmas.
Az Airflow főbb jellemzői a következők:
- Pipeline ütemezés: Automatizálja a munkafolyamatok végrehajtását meghatározott ütemezések alapján.
- Függőségkezelés: Biztosítja, hogy a feladatok a megfelelő sorrendben futjanak.
- Valós idejű megfigyelés: Áttekintést biztosít a munkafolyamat állapotáról és teljesítményéről.
- Skálázhatóság : Bármilyen léptékű munkafolyamatot kezel, a kicsitől a vállalati szintig.
Az Airflow zökkenőmentesen integrálható olyan felhőplatformokkal, mint az AWS, a Google Cloud és az Azure. Több mint 1500 előre beépített modullal, például kezelőkkel, horgokkal és érzékelőkkel, leegyszerűsíti a munkafolyamatok összehangolását különböző környezetekben.
Főbb jellemzők:
-
DAG-alapú modellezés: A munkafolyamatokat DAG formájában definiáljuk Pythonban.
-
Dinamikus ütemezés: Időzített vagy eseményvezérelt futtatás.
-
Paralelizmus és skálázhatóság: Több feladat párhuzamos futtatása különböző végrehajtókon (pl. Celery, Kubernetes).
-
Megfigyelhetőség és naplózás: Webes UI és loggolás támogatás.
Példa Airflow munkafolyamatra
Tegyük fel, hogy egy napi adatfeldolgozási folyamatot kell létrehozni, amely:
-
Lekéri az adatokat egy API-ból.
-
Betölti az adatokat egy adatbázisba.
-
ETL (Extract, Transform, Load) transzformációt hajt végre.
-
Elkészít egy jelentést és e-mailt küld.
Példa Airflow DAG kódrészlet:
Ebben a példában:
-
Egy API-ból lekérjük az adatokat.
-
E-mailben értesítést küldünk a folyamat sikerességéről.
Airflow vs Oracle Data Integrator (ODI)
Tulajdonság | Apache Airflow | Oracle Data Integrator (ODI) |
---|---|---|
Funkció | Munkafolyamat- és ETL-automatizáció | ETL, ELT és adattranszformációs megoldás |
Konfiguráció | Python alapú DAG-ok | Grafikus felületen konfigurálható |
Ütemezés | Beépített ütemező (cron, eseményvezérelt) | ODI Agent használata |
Skálázhatóság | Könnyen skálázható Kubernetes, Celery használatával | Jól illeszkedik az Oracle ökoszisztémába |
Megfigyelhetőség | Webes UI, logolás, metrikák | Oracle Enterprise Manager integráció |
Mikor melyiket érdemes használni?
-
Airflow: Ha nyílt forráskódú, Python-alapú megoldást keresünk összetett adatintegrációs folyamatokhoz.
-
ODI: Ha Oracle-alapú adatbázisokkal dolgozunk, és inkább egy vizuális felületen szeretnénk konfigurálni a folyamatokat.
Apache Airflow implementáció lépésről lépésre
Ebben az útmutatóban egy teljesen működőképes Airflow rendszert állítunk be egy egyszerű ETL folyamatra, amely:
-
Lekér egy CSV fájlt egy nyilvános URL-ről.
-
Feldolgozza és transzformálja az adatokat.
-
Betölti az adatokat egy PostgreSQL adatbázisba.
1. Airflow telepítése és konfigurálása
Ha még nincs telepítve az Airflow, használhatjuk a Docker Compose-t egy gyors és egyszerű beállításhoz.
Docker alapú telepítés (Ajánlott)
-
Hozz létre egy új mappát és lépj bele:
-
Töltsd le az Airflow hivatalos
docker-compose.yaml
fájlját: -
Állítsd be a szükséges környezeti változókat:
-
Indítsd el az Airflow-t:
Ellenőrizheted az UI-t a következő címen:
http://localhost:8080
(Alapértelmezett bejelentkezési adatok:airflow / airflow
)
2. Az Airflow DAG létrehozása
Hozzunk létre egy új DAG fájlt a következő helyen:
dags/simple_etl.py
3. PostgreSQL kapcsolat beállítása
Az Airflow UI-ban Connections menüben állítsd be a PostgreSQL kapcsolatot:
-
Conn Id:
my_postgres_conn
-
Conn Type:
Postgres
-
Host:
localhost
(vagy Docker esetén a konténer neve) -
Schema:
postgres
-
Login:
airflow
-
Password:
airflow
Ha nincs PostgreSQL-ed, gyorsan telepítheted Dockerrel:
4. DAG futtatása
Miután elhelyeztük a fájlt a dags/
könyvtárban, menjünk az Airflow UI-ra (http://localhost:8080
), és:
-
Engedélyezzük a DAG-ot.
-
Manuálisan futtassuk le az első alkalommal.
Ha minden jól megy, az Airflow automatikusan végrehajtja a három lépést.
5. Ellenőrzés
-
Az Airflow UI Graph View nézetében láthatod a DAG futását.
-
A PostgreSQL-ben ellenőrizheted, hogy bekerültek-e az adatok:
Összegzés
✔ Telepítettük és beállítottuk az Airflow-t.
✔ Létrehoztunk egy DAG-ot egy egyszerű ETL folyamattal.
✔ Adatokat töltöttünk le, transzformáltunk és PostgreSQL-be betöltöttünk.
Apache Airflow alapvetően egy Python-alapú eszköz, és a munkafolyamatokat (DAG-okat) Pythonban kell definiálni. Azonban vannak módok arra, hogy minimális Python tudással is használd:
Airflow UI használata (Python nélkül is kezelhető)
📌 Az Airflow Web UI lehetővé teszi a következőket:
✔ DAG-ok engedélyezése és ütemezése
✔ Futások manuális indítása
✔ Munkafolyamat állapotának figyelése
✔ Naplók és hibaüzenetek ellenőrzése
Tehát ha már vannak előre megírt DAG-ok, akkor azok üzemeltetéséhez és figyeléséhez nincs szükség Python tudásra.
2. Airflow konfigurálása JSON/YAML segítségével
Ha egy DAG-ot szeretnél létrehozni Python nélkül, akkor egy lehetőség az, hogy egy külső adatforrásból (pl. JSON vagy YAML) generálod a munkafolyamatot.
Példa egy JSON-alapú DAG definícióra:
Ehhez egy Python script kell, ami ezt JSON-ból Airflow DAG-á alakítja, de a DAG definícióját nem kell manuálisan kódolni.
3. Apache Airflow REST API használata
Airflow rendelkezik egy API-val, amely segítségével külső eszközökből is lehet DAG-okat kezelni.
📌 Példa egy DAG futtatására API-n keresztül (Python nélkül, pl. Postmanből vagy curl-lel):
Ezzel akár egy grafikus felületű alkalmazásból is lehet DAG-okat indítani.
4. Airflow BashOperator és SQL használata
Ha nem akarsz Python kódot írni, használhatod az Airflow beépített BashOperator-át és SQL-lekérdezéseket.
Példa egy teljes DAG-ra Python minimális használatával:
📌 Ebben a példában:
-
Nincs adatfeldolgozás Pythonban, minden Bash és SQL segítségével történik.
-
BashOperator hív egy külső API-t.
-
PostgresOperator betölti az adatokat egy adatbázisba.
Összegzés
❌ Teljesen Python nélkül nem lehet használni az Airflow-t, mert a DAG-ok Pythonban vannak definiálva.
✅ Viszont Python minimális tudással is lehet használni:
-
Az Airflow UI-val kezelheted a DAG-okat.
-
JSON/YAML segítségével definiálhatók DAG-ok (de valakinek kell egy átalakító Python scriptet írnia).
-
Az Airflow API segítségével lehet DAG-okat indítani.
-
BashOperator és SQL használatával Python kódolás nélkül is megvalósíthatók bizonyos ETL folyamatok.
Link:
https://github.com/apache/airflow
https://airbnb.io/projects/airflow/
https://www.astronomer.io/airflow/
Megjegyzések
Megjegyzés küldése