Airflow?
- Airflow는 프로그래밍 방식으로 워크플로우를 작성, 예약 및 모니터링하는 플랫폼이다. DAG(Directed Acyclic Graphs : 방향성 비순환 그래프)로 워크플로우를 작성한다. DAG는 실행 경로와 순서를 보장하기 위해 방향성을 가지고 이전에 완료된 작업으로 되돌아가 순환할 수 없는 비순환 그래프여야 한다. Airflow Scheduler는 작성된 워크플로우를 예약된 일정에 따라 실행한다.
Airflow Architecture
- Metadata Database : Airflow 메타데이터 저장소로 어떤 DAG가 존재하고 어떤 task로 구성되었는지 등 airflow의 관련된 많은 정보를 저장한다.
- Scheduler : 모든 DAG와 task를 모니터링하고 관리한다. 예약된 일정대로 DAG를 실행한다.
- Executor : task의 인스턴스를 실행하며 종류가 다양하다.
- Workers : Executor의 작업을 수행한다.
- Webserver : Airflow 웹 UI 서버.
- DAG Directory : 작성된 DAG파일이 모여있는 디렉토리.
- User Interface : Airflow 웹 UI.
Airflow parameter tuning
- Airflow를 운영하기 위해서 알아야 할 파라미터 정보가 있다.
concurrency, max_active_runs
- 세로의 긴 네모 박스를 1개의 DAG, 각 동그라미 1개가 single task입니다. max_active_runs는 3이고 동시에 실행 될 수 있는 Dag의 수를 말하고 concurrency는 5이고 최대 실행될 수 있는 task의 수를 말합니다. max_active_runs의 값이 3이므로 3개의 single task가 실행되고 4번째 Dag의 Single task는 실행되지 못합니다. 남아있는 2개의 task를 실행중인 DAG에서 실행하게 됩니다.
parallelism
- Airflow의 기본 설정은 최대 32개의 task만 동시에 실행가능 합니다. 32개 이상의 task를 동시에 실행해야 할 경우에는 airflow.cfg파일에서 값을 변경해 주면됩니다.
Reference
LINE Engineering
Airflow Doc
Airflow tuning