Udemy - Apache Airflow: The Hands-On Guide 강의를 요약한 내용입니다.
Web server
➡️ MetaDB
Scheduler
➡️ MetaDB
& Executor
Executor
➡️ MetaDB
Scheduler
와Web server
, Executor
는 MetaDB
를 통해 서로 접근이 가능Queue
(redis
나 rabbitMQ
): executor
의 외부에 존재하고, 여러 Worker
에 Task들을 분배하기 위해 사용Worker
: Task가 실제로 실행되는 NodeExecutor
: Task들을 외부의 Queue
로 전달Queue
로 전달된 후, Worker
가 Queue
에 있는 Task들을 가져감
1. Dag 폴더에 Dag 추가
2. Web server
와 Scheduler
가 추가된 Dag 정보를 Parsing
3. Scheduler
는 추가된 dag가 실행되어야하는지 확인
4. 실행되어야 한다면 DagRun object 생성
5. DagRun object는 running 상태로 MetaDB
에 저장
6. Dag 내에 실행 준비가 된 task가 있다면, scheduled 상태로 TaskInstance object 생성
7. Schduler
가 TaskInstance를 queued 상태로 Executor
에 전달
8. Executor
가 task를 실행할 준비가 되면, TaskInstance 상태를 running으로 변경
9. Executor
가 MetaDB
에 TaskInstance 상태를 running으로 업데이트
10. Task가 종료되면, Executor
가 MetaDB
에 TaskInstance 상태를 채completed으로 업데이트
11. Scheduler
는 실행할 Task가 더 있는지 확인 후, DagRun object를 completed로 업데이트
12. Web server
가 UI에 Dag 상태 업데이트