yoncho`s blog
0. Apache Airflow | Workflow Opensource Platform 본문
0. Apache Airflow | Workflow Opensource Platform
욘초 2024. 6. 14. 19:31
1. Airflow란?
초기 airbnb(Airfbnb) 엔지니어링 팀에서 개발한 워크플로우 오픈 소스 플랫폼이다.
추후 apache로 넘어갔다.
*워크플로우 : 의존관계 작업(Task)의 집합
프로그래밍(python) 방식으로 워크플로우를 작성하고 예약(*Scheduler), 모니터링(*Monitoring) 할 수 있다.
즉, 스케쥴러 기능을 탑재한 워크플로우 오픈 소스 플랫폼이다.
2. Airflow 구성
(a) DAG (Directed Acyclic Graph)
- 순환하지 않는 그래프, 대그라 부른다.
- 반복/순환은 허용되지 않으며 하나의 플로우로 구성되어 순차적으로 Task를 수행한다.
(b) Operator
- Task를 정의함.
- Type
1) Action Operators : 기능 및 명령을 실행하는 오퍼레이터
- 데이터 추출 및 프로세싱, 코드 실행
- 기본 내장 : Bash, Python, SSH, Email Operator들이 존재한다.
*위 Operator들 중 Bash, Python, SSH를 본 작성자는 사용했다.
2) Transfer Operators : 서로 다른 시스템간 데이터 이동 시 사용하는 오퍼레이터
3) Sensor Operators : 조건 만족 시 동작하는 오퍼레이터
(c) Task & Task Instance
- Task는 워크플로우 안에 있는 Operator를 의미하며, Operator를 실행하면 Task가 된다.
- 워크플로우안에서 Trigger로 실행 되는 Task를 Task Instance로 불린다.
- Task 실행 순서 정의는 ">>" rshift를 사용해 Task간의 의존성을 정의할 수 있다.
ex: Task1 >> Task2 >> Task3
Task는 작업을 실행하는 Manager로, 사용자가 Operator로 수행할 작업을 작성해놓으면
Airflow는 Task를 통해 해당 작업을 실행한다.
3. Airflow Architecture
하단 그림은 airflow component간 연결도를 보여주는 airflow 아키텍처다.
Airflow Component 구성
- web server : airflow 작업들을 monitoring할 수 있게 작업 상태, 목록, 로그 등을 시각화 해준다.
- scheduler : 작업들을 Operator에 지정한 schedule에 맞게 triggering과 실행을 위해 executor에게 task를 제공한다.
- executor : 실행중인 작업들을 handling 하며, 기본적으론 scheduler에 있는 모든 작업을 실행시키지만 production 수준의 executor는 worker들에게 작업들을 분배 (push) 한다.
- workers : 실제 작업들을 실행한다.
- metadb : DAG, Task등의 metadata를 저장하는 곳이다.
Airflow Component에서 추후 Airflow Clustering시 worker들을 분산 시켜놓고 Master 와 연결해주면 된다.
추가로 worker별로 Master와 동일한 DAG 폴더가 존재해야 작업 실행이 가능하다.
*참고:
'기술, 나의 공부를 공유합니다. > Apache Airflow' 카테고리의 다른 글
2. Airflow Cluster (w/Docker) | Airflow HA(고가용성)을 위한 Clustering (0) | 2024.06.14 |
---|---|
1. Airflow (w/Docker) | Docker Container에 Airflow 구축 (0) | 2024.06.14 |