Airflow 설명
- 에어플로우는 (스케줄러를 넘어) 파이썬에서 데이터 파이프라인을 위한 플랫폼입니다
- Top level Apache 프로젝트
- Airbnb에서 시작한 아파치 오픈소스 프로젝트
- 가장 많이 사용되는 데이터 파이프라인 관리/작성 프레임 워크
- 데이터 파이프라인 프레임워크
- Python 3에서 데이터 파이프라인을 프로그래밍 방식으로 설계, 예약 및 모니터링 지원
- 데이터 파이프라인 스케줄링 지원
- 정해진 시간에 ETL 실행 혹은 한 ETL의 실행이 끝나면 다음 ETL 실행
- 웹 UI도 제공합니다
- 데이터 파이프라인(ETL)을 쉽게 만들 수 있도록 해줌
- 다양한 데이터 소스와 데이터 웨어하우스를 쉽게 통합해주는 모듈 제공
- 데이터 파이프라인 관리 관련 다양한 기능을 제공 ⇒ 특히 Backfill
- Airflow의 데이터 파이프라인을 "**방향 비순환 그래프"(DAG)**라고 합니다
- 하나의 DAG는 하나 이상의 태스크(일명 task, 연산자)으로 구성됩니다.
- Airflow는 하나 이상의 서버로 구성된 클러스터입니다
- Worker 및 Scheduler로 구성됨
- 스케줄러는 당신의 Task를 여러 개의 worker들에게 분배할 것입니다
- DAG 및 스케줄링 정보는 DB에 저장됩니다(SQLite가 기본적으로 사용됨)
- 실제 프로덕션 용도로는 MySQL 또는 Postgres가 선호됨
- 다양한 타사 서비스와의 매우 포괄적인 통합을 이루고 있습니다.
- 2020년 12월 에어플로 2.0 출시
- 에어플로 2.0을 사용합니다
- Airflow 1.x에서 2.0으로 업그레이드 지침
- Airflow 버전 선택 방법: 큰 회사에서 사용하는 버전이 무엇인지 확인. (무조건 최신 사용 X)
- 참고로 DAG의 tag 붙이는 기준은 아래와 같은 예시를 들 수 있습니다
- DAG의 중요도, 소유자, 팀 명칭, DAG의 특징
Airflow 구성
Apache Airflow 컴포넌트
Apache Airflow는 총 5개의 컴포넌트로 구성됩니다.
- Web Server
- 마스터 기능
- 웹 서버는 python Flask로 구현이 되어 있습니다.
- 웹 UI는 스케쥴러와 DAG의 실행 상황을 시각화해줍니다.