AirBnB에서 만든 workflow management tool
Python 코드로 워크플로우(workflow)를 작성하고, 스케쥴링, 모니터링 할 수 있는 플랫폼
일련의 작업 흐름
Not ETL → workflow 및 파이프라인을 관리하는 툴
관리란?
workflow 작성 → 스케쥴링 → 모니터링
실제 task를 실행하는 주체자. Executor 종류에 따라 동작 방식이 다양
실행중인 task를 handling하는 component
default 설치시에는 scheduler에 잇는 모든 것을 실행하지만 production수준에서의 executorsms worker에게 task를 push.
airflow로 할당된 work들을 스케쥴링 하는 conponent
schuduled된 workflow들의 triggering과 실행하기 위해서 executor에게 task를 제공해주는 역할을 수행
Airflow에 존재하는 DAG와 Task들의 메타데이터를 저장하는 데이터베이스
Directed Acyclic Graph로 개발자가 Python으로 작성한 워크플로우. Task들의 dependency를 정의.
실행하고 싶은 Task들의 관계와 dependency를 표현하고 있는 Task들의 모음.
어떤 순서와 어떤 dependency로 실행할지, 어떤 스케줄로 실행할지 등의 정보를 포함
따라서 DAG를 정확하게 설정해야 Task를 원하는 대로 스케쥴링할 수 있음.
# ex)
my_task = BashOperator(...)
Airflow는 기본적인 Task를 위해 다양한 Operator를 제공
Airflow는 DAG를 관리하는 디렉토리를 지정해 관리함
→ airflow.cfg 에서 설정
기본 SQLite를 제공하지만 PostgreSql로 변경하는 이유
→ SequentialExecutor 가 아닌 다른 Executor를 사용하기 위해
→ SequentialExcutor는 병렬처리를 제공하지 않기 때문에 DAG에서 같은시간으로 스케쥴러를 실행해 놓아도 순차적 실행됨
airflow.cfg 파일 수정
# 수정 전
executor = SequentialExecutor
...
sql_alchemy_conn = sqlite:////home/minsukoo/airflow/airflow.db
# 수정 후
executor = LocalExecutor
...
sql_alchemy_conn = postgresql+psycopg2://airflow:airflow1!@localhost/airflow코드를 입력하세요