yoncho`s blog

0. Apache Airflow | Workflow Opensource Platform 본문

기술, 나의 공부를 공유합니다./Apache Airflow

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 폴더가 존재해야 작업 실행이 가능하다. 

 

*참고: 

https://velog.io/@sophi_e/Airflow-%EA%B8%B0%EC%B4%88-%EA%B0%9C%EB%85%90-%EB%B0%8F-%EC%9E%A5%EB%8B%A8%EC%A0%90

https://lsjsj92.tistory.com/631

Comments