일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- kubeadm
- Packet
- AWS
- CVAT
- kubernetes
- Operating System
- OS
- tcp
- grafana
- EC2
- log
- Spring
- PostgreSQL
- docker
- java
- MAC address
- Network
- Python
- CSV
- ip
- airflow
- zookeeper
- Vision
- Trino
- kubectl
- jvm
- Kafka
- JavaScript
- aws s3
- helm
- Today
- Total
JUST WRITE
How Airflow works? 본문
How Airflow works
Airflow가 어떻게 동작하는지 알아보려 한다.
Single Node, Multi Nodes에서 각각 어떻게 동작하는지 알아보려 한다.
Single Node Architecture
Single Node Architecture에서는 모든 Airflow Componet가 단일 Machine에서 동작한다.
(WebServer, Metastore, Scheduler, Executor)
WebServer는 Metastore에서 Data를 가져와 Web Application에서 보여준다.
Scheduler는 Metastore와 통신하고 실행한 Task가 있을 시 Executor에게 요청한다.
Executor는 Metstore에서 Data를 확인하고 실행할 Task를 실행한다.
Executor내부에 Queue가 존재한다.
모든 Component는 Metastore을 통해 동작한다.
Multi Nodes Architecture
Multi Nodes Architecture에서는 Componete들이 다른 Machine에서 배치되어 동작한다.
WebServer, Scheduler는 Metastore와 분리되었지만 동작은 똑같이 Metastore와 통신하며 동작한다.
내부에 있던 Executor Queue는 외부로 분리되어진다.
Executor Queue는 RabbitMQ, Redis와 같은 3rd party Tool로 구성된다.
수행할 Task가 있으면 Executor가 해당 Task를 Queue에게 Push 한다.
다수의 Worker는 Queue를 Push 된 Task를 수행한다.
동작
DAG 파일 생성부터 Pipeline 진행이 어떻게 진행되는 과정은 아래와 같다.
- /dags 폴더에 Python으로 정의한 DAG 파일을 생성
- WebServer와 Scheduler가 /dag 폴더에 정의한 DAG 파일 Parse
- Web Application에 Data 노출
- Scheduler는 Metastore에 DAGRun Object 생성
- 해당 Pipeline Trigger
- Scheduler 해당 DAGRun Object 상태 Running으로 변경
- Metastore에 TaskInstance 생성
- Executor가 TaskInstance 실행/종료 상태 변경
- Scheduler는 지속적으로 Pipeline의 모든 Task 종료 여부 체크
- 모든 Task 종료되면 DAGRun Object 상태 Completed로 변경
- WebServer UI 해당 DAG 상태 변경
'MLOps > Airflow' 카테고리의 다른 글
뭐야?! No Space left on device?! - Airflow db clean (0) | 2023.09.20 |
---|---|
Airflow Variables 세팅 - 전역변수 설정 (0) | 2023.07.23 |
Kubernetes환경에서 Airflow를?!?! (0) | 2023.06.28 |
What is Airflow? (0) | 2022.03.23 |