Apache Airflow in Één Alinea
Apache Airflow is een open-source platform om workflows te programmeren, plannen en monitoren. Een workflow wordt gedefinieerd als Python-code — een DAG (Directed Acyclic Graph) — die beschrijft welke taken uitgevoerd moeten worden en in welke volgorde. Airflow's scheduler zorgt dat die taken op het juiste moment draaien, met een webinterface om de status en logs van elke run te inspecteren.
In één zin
Waar een cron-job alleen "draai dit script om 3 uur 's nachts" kan, regelt Airflow ook complexe afhankelijkheden tussen taken, automatische retries bij falen, en geeft het zichtbaarheid in wat er precies gebeurde en wanneer.
DAGs: De Bouwstenen van Airflow
Een DAG is directed (taken hebben een duidelijke volgorde/afhankelijkheid) en acyclic (geen loops — een taak kan nooit indirect van zichzelf afhangen). Dit is precies wat je nodig hebt om een pipeline te beschrijven: eerst data ophalen, dán transformeren, dán pas laden.
# Een minimale DAG: twee taken met een expliciete afhankelijkheid from airflow import DAG from airflow.operators.python import PythonOperator from datetime import datetime def extract(): print("Data ophalen uit de bron...") def transform(): print("Data transformeren...") with DAG( dag_id="dagelijkse_orders_pipeline", start_date=datetime(2026, 1, 1), schedule="@daily", catchup=False, ) as dag: extract_task = PythonOperator(task_id="extract", python_callable=extract) transform_task = PythonOperator(task_id="transform", python_callable=transform) extract_task >> transform_task # transform draait pas ná een succesvolle extract
De >>-operator legt de afhankelijkheid vast: transform_task start pas zodra extract_task succesvol is afgerond. Bij falen probeert Airflow de taak automatisch opnieuw (configureerbaar aantal pogingen), en blijft de rest van de DAG wachten totdat dat is opgelost of de taak definitief als mislukt wordt gemarkeerd.
Operators en Executors: Wat versus Hoe
Twee concepten die vaak door elkaar gehaald worden, maar een ander deel van de vraag beantwoorden:
Operators (wát)
- PythonOperator — voert een Python-functie uit
- BashOperator — voert een shell-commando uit
- Sensor — wacht op een conditie (bestand, tabel, tijdstip)
- Custom operators voor specifieke integraties (dbt, Snowflake, S3)
Executors (hoe/waar)
- LocalExecutor — voor ontwikkeling, draait op één machine
- CeleryExecutor — verdeelt taken over een gedistribueerde task queue
- KubernetesExecutor — draait elke taak in een eigen, geïsoleerde pod
In productie is KubernetesExecutor inmiddels een gangbare keuze: elke taakuitvoering krijgt zijn eigen, geïsoleerde omgeving met precies de benodigde dependencies, zonder dat taken elkaars resources kunnen beïnvloeden.
Kerncomponenten van een Airflow-Omgeving
- Webserver — de gebruikersinterface voor DAG-visualisatie, het inspecteren van logs en handmatig triggeren van runs.
- Scheduler — het brein: bepaalt wanneer welke taak moet draaien op basis van het schema en afhankelijkheden.
- Metadata database — slaat DAG-definities, taakstatussen en uitvoeringsgeschiedenis op.
- Workers — de daadwerkelijke uitvoerders van taken, aangestuurd via de gekozen executor.
Best Practices
- Idempotentie — een taak moet bij herhaling met dezelfde input hetzelfde resultaat opleveren, zonder duplicaten. Essentieel omdat Airflow automatisch opnieuw probeert bij een fout.
- Kleine, modulaire taken in plaats van één grote taak — makkelijker te debuggen, en een gefaalde taak hoeft niet de hele pipeline opnieuw te draaien.
- Configuratie via Variables en Connections in plaats van hardcoded waarden in DAG-code.
- Test DAGs lokaal voordat ze naar productie gaan — een syntaxfout in een DAG kan de hele scheduler vertragen.
- Stel alerts in op falende taken, niet alleen op falende DAGs — een losse taak die stil faalt kan makkelijk onopgemerkt blijven.
Airflow of een Alternatief?
Airflow is de meest gevestigde en breed ondersteunde optie, met de grootste community en het grootste aanbod aan kant-en-klare operators. Nieuwere alternatieven zoals Prefect richten zich op eenvoudigere lokale ontwikkeling en dynamischere workflows. Zie Apache Airflow vs Prefect voor een volledige vergelijking als je tussen de twee twijfelt.
Conclusie
Apache Airflow orchestreert datapipelines via DAGs — workflows gedefinieerd als Python-code met expliciete taakafhankelijkheden — uitgevoerd door een scheduler en executor naar keuze. De combinatie van een grote community, brede toolintegratie en bewezen schaalbaarheid maakt het de standaardkeuze voor de meeste organisaties, tenzij een specifieke behoefte (eenvoudigere lokale ontwikkeling, dynamischere workflows) richting een alternatief wijst.
Wil je hulp bij het opzetten of optimaliseren van je orchestratielaag? Neem contact op, of lees verder in het gratis Data Engineering Handboek.
Veelgestelde vragen
Wat is een DAG in Apache Airflow?
Een workflow gedefinieerd als Python-code: taken met expliciete afhankelijkheden, zonder circulaire verwijzingen. Airflow gebruikt de DAG om de uitvoeringsvolgorde te bepalen.
Wat is het verschil tussen een operator en een executor?
Een operator bepaalt wát een taak doet; een executor bepaalt hoe en waar die taken daadwerkelijk draaien (lokaal, via Celery, of in Kubernetes).
Is Apache Airflow gratis?
Ja, open-source en gratis. Managed versies (Astronomer, Google Cloud Composer, Amazon MWAA) zijn betaalde diensten die het infrastructuurbeheer overnemen.
Waarom moeten Airflow-taken idempotent zijn?
Omdat Airflow automatisch opnieuw probeert bij een fout — een niet-idempotente taak kan bij zo'n retry data corrumperen of dupliceren.