Introduction to Apache Airflow
Xia Wang (王夏)
2021-12-14
Apache Airflow
Apache Airflow
Good at:
Extract frontend events (E)
Transform to session level (T)
Load session info to data warehouse (L)
Not Good at:
A
B
C
| Airflow | Luigi | Oozie | Azkaban | Jenkins |
workflow definition | Python | Python | XML | Custom DSL | Groovy/Bash |
community | Very Active | Active | Active | Somewhat Active | Active |
main purpose | general purpose Batch ETL | general purpose Batch ETL | Hadoop Job Scheduling | Hadoop Job Scheduling | CI/CD |
scheduling | easy to schedule with the scheduler component | no central process that automatically triggers jobs | verbose scheduling definition | easy to schedule | cronjobs |
task dependency/ parallelisation | out-of-box support for task dependency/ parallelisation | no straightforward way to make sure second task starts before first task ends | yes in Hadoop ecosystem | yes in Hadoop ecosystem | use stages to set execution order; need to manually define more complex workflows |
easiness to use | easy | easy | relatively easy | relatively easy | hard |
target audience | data engineer/analyst/scientist | data engineer/analysts/scientist | data engineer | data engineer | system operation/ dev team |
Basic Concepts in Airflow
By default, Airflow supports, among others:
Strong support from the community for a good variety of cloud service providers:
Link to the dag class parameter reference
More on Scheduler and HA
Kubernetes Executor: link
Celery Executor: link
Q & A