Apache Airflow Architecture
Apache Airflow Architecture
Apache Airflow
Airflow는 복잡한 data workflow을 orchestrate하기 위해 설계된 open source platform이다. DAG(Directed Acyclic Graphs)
를 사용하여 일련의 task와 그들간의 dependencies
를 정의한다. 다양한 component로 구성되어있으면 차례대로 살펴보자
Components
Web Server
- 모니터링, dag, variables, connection을 관리하며 log를 체크할 수 있는 Airflow UI
- data workflow를 시각화시키고, progress를 check하며 어떤 issue를 트러블슈팅 하게 함
Scheduler
Executor
- 주요 role은 task를 수행시키는것
scheduleer
와 상화작용하여 task의 상세정보를 얻고 task 수행에 필요한 process 또는 container를 시작시킴- Airflow는 다양한 Executor Type을 제공. 각각은 특정 인프라 설정 및 운영요구사항에 맞게 조정
Worker
- Executor에의해 할당된 task가 수행되는 역할 구성
- 선택된 Executor에 의해, process나 container를 분리시킬 수 있음
- Worker는 실제 code나 script를 수행 역할을 담당하고, 그들의
status
를 Executor에 레포팅
Metadata Database
- Airflow의 설정한 task의 상세정보 그리고 과거에 어떻게 수행되었느지를 포함한 모든
workflow
를 추적 scheduled task
과 관련된 모든것들은 저장하고 구성- 작업의 모든 진행 상황을 살펴보고 발생할 수 있는 문제를 해결하는데 도움
- PostgreSQL, MySQL, SQLite등 다양한 db를 유연성을 제공
Message Broker
- CeleryExecutor가 작업 배포에 사용되는 설정에서 message broker는 매우 중요한 역할을함
RabbitMQ
또는Redis
와 마찬가지로scheduler
와worker
사이의 중개자역할을 함scheduler
에서worker
로 작업 세부 정보를 전달하여 원활한 통신을 보장하고, 작업이 분산 시스템 전반에서 안정적이고 효율적으로 실행 되도록 보장
Airflow 기본동작 원리
- usr가 새로운 dag을 생성 -> dags folder안에 py 파일배치
- web server와 scheduler가 파싱하여 읽어옴
scheduler
가metastore
를 통해DagRun
오브젝터를 생성
DagRun
은 사용자가 작성한 Dag의 instance
scheduler
는 Task Instnace Object를 스케쥴링함- 트리거가 상황이 맞으면
scheduler
가 task instance를 executor로 보냄 - executor는 task instaance를 실행시킴
- 완료 후
metastore
에 완료되었다고 보고- 완료된 Task instance는 Dag Run에 업데이트
scheduler
는 Dag이 실행이 완료되었는지metastore
를 통해Dag Run
상태를 완료로 바꿈
metastore
가webserver
에 업데이트하여 사용자도 확인
참고
- https://github.com/mjs1995/muse-data-engineer/blob/main/workflow/airflow/airflow_architecture.md
- https://airflow.apache.org/docs/apache-airflow/stable/core-concepts/overview.html#airflow-components
- https://medium.com/apache-airflow/airflow-architecture-simplified-3d582fc3ccb0
- https://tommypagy.tistory.com/669
This post is licensed under CC BY 4.0 by the author.