The Complete Hands-On Introduction to Apache Airflow
Udemy에서 The Complete Hands-On Introduction to Apache Airflow 강의를 듣고 정리한 게시글입니다.
1. Airflow가 필요한 이유?
ELT 파이프라인을 자동화 하기 위해서
2. 필요한 것?
파이썬 + Docker
3. Airflow 장점
- dynamic
- scalability
- UI
- Extensibility
4. Core components
- web server
- scheduler
- metastore
- triggerer
- executor
- queue
- worker
5. Core concepts
- DAGs 그래프 : No cycle
- Operator : Action Operators(어떤것을 실행,python,bash operator), Transfer Operators(data를 point a에서 b로 transfer해줌), Sensor Operators(다음 단계로 가기 전에 어떤것의 발생을 대기할 수 있게해줌)
즉, 두가지를 혼합하여 Operator가 어떠한 task를 실행(task instance 생성)하면 이렇게 생긴 여러개의 operator를 DAG 그래프로 연결해주는 것이 주요 concept.
6. Airflow는 data streaming solution, data processing framework 가 아니다.
Airflow는 operator를 사용하여 실행 트리거를 작동하는 방법이지 Spark 처럼 직접 데이터를 프로세싱하는 툴이 아니다.
7. Architectures
- One Node Architecture : 하나의 Node 안에 Web server, Metastore, scheduler, executor - queue(part of the executor)로 구성되어있다.
- Multi Nodes Architectures(Celery) : 하나의 Node에 Web server, scheduler, executor로 구성되어있고, 다른 Node에는Metastore, Queue(External to the executor)로 구성되어있다.
각 노드마다 Worker Node(airflow worker로 구성된)가 필요하며 더 많은 task를 실행할 필요가 있을 경우에는 Worker Node를 새로운 machine에 더해주면 됩니다.
또한 웹에서 로드 밸런서(Load Balancer)를 사용할 경우에는 2개의 web server, scheduler가 필요합니다.
8. Execution flow(how tasks are executed)
구성요소 : 1 Node(Web server, Metastore, Executor, Scheduler, Folder Dags)
- dag.py(새로운 DAG를 생성)을 Folder Dags에 생성
- 5분마다 Scheduler가 Folder Dags에 새로운 DAGs가 있는지 확인함(parse)
- Scheduler가 Metastore에 DAG를 실행할 DAGRun Object를 생성하여 Schedules Task Instance Object이 된다.
- Scheduler가 TaskInstance를 Executor에게도 전송.
- Executor가 TaskInstance로 전달받은 실행을 작동하고 Metastore에 TaskInstance로 업데이트
- Scheduler가 제대로 실행됐는지 Metastore에 TaskInstance를 확인.
- Airflow UI에 업데이트됨
9. 실습
1. 왼쪽에 위치한 토글 : 실행과 실행중지를 정할 수 있음.
2. DAG 이름 및 Tag : 팀별로 혹은 기능별로 구분화 할 수 있기에 유용함. 그러나 태그를 통해 permission 정의는 불가함.
3. Owner : 말그대로 data pipeline에 owner를 명시.
4. Runs : 어떤 상태로 진행되고 있는지 확인 가능.
5. Schedule : 얼마만큼의 스케줄방식으로 data pipeline이 실행되는지 확인가능.
6. Recent Tasks : 좀더 상세하게 최근 실행한 상황을 확인가능.
7. Action : DAG를 바로 실행하거나 삭제하고 싶을때 사용.