데브코스-데이터엔지니어링
Airflow 란 무엇인가?
묠니르묘묘
2024. 5. 26. 15:45
1. Airflow 소개
- 파이썬으로 작성된 데이터 파이프라인(ETL) 프레임워크
- Airbnb에서 시작한 아파치 오픈소스 프로젝트
- 가장 많이 사용되는 데이터 파이프라인 관리 및 작성 프레임워크
- 데이터 파이프라인 스케줄링 지원
- 정해진 시간에 ETL 실행 or 한 ETL의 실행이 끝나면 다음 ETL 실행
- 웹 UI 제공
- 데이터 파이프라인(ETL)을 쉽게 만들 수 있게 해줌
- 다양한 데이터 소스와 데이터 웨어하우스를 쉽게 통합해주는 모듈 제공
- https://airflow.apache.org/docs/
- 데이터 파이프라인을 DAG(Directed Acyclic Graph)라고 부름
- 1개의 DAG는 1개 이상의 태스크(task)로 구성
2. Airflow 구성
- 웹 서버(Web Server)
- 웹 UI는 스케줄러와 DAG의 실행 상황을 시각화해줌
- Python Flask로 구현되어 있음
- 스케줄러 (Scheduler)
- DAG들을 워커들에게 배정하는 역할 수행
- 스케줄러와 각 DAG의 실행 결과는 별도 DB에 저장됨
- 정해진 시간에 실행되게 할 수 있으며, 순차적 태스크 진행
- 워커 (Worker)
- DAG를 실행하는 역할 수행
- 메타 데이터 데이터베이스 (Metadata Database)
- SQLite 가 기본 설치
- 실제 프로덕션에서는 MySQL 이나 Postgres 를 사용해야 함
- 큐 (Queue)
- 다수 서버 구성인 경우에만 사용
- 이 경우 Executor가 달라짐
3. Airflow 구조 : 서버 한대
4. Airflow 구조 : 다수 서버
- 스케일링 할 때는 워커를 별도의 서버에서 돌리고, 워커가 있는 서버의 수를 늘리는 형태로 용량 증대
5. Airflow 구조
- 사용자는 UI 를 통해서 웹 서버와 통신
- Airflow 서버 안에는 DAG Directory 가 있고, 여기에 파이썬으로 작성된 데이터 파이프라인 코드가 있음
- 위 다렉토리를 Airflow가 주기적으로 파싱해서 Metadata DB에 기록
- 스케줄러가 Executor 를 통해서 워커들에게 일을 주는데, Executor 특성에 따라서 Queue 가 있기도 하고 없기도 함
6. Airflow 개발 장단점
장점
- 데이터 파이프라인 세밀하게 제어 가능
- 다양한 데이터 소스와 데이터 웨어하우스 지원
- 백필(Backfill) 쉬움
단점
- 배우기 쉽지 않음
- 상대적으로 개발환경 구성하기 쉽지 않음
- 직접 운영이 쉽지 않으며, 클라우드 버전 사용이 선호됨
- GCP provides "Cloud Composer"
- AWS provides "Managed Workflows for Apache Airflow"
- Azure provides "Data Factory Managed Airflow"
7. DAG 란?
- Directed Acyclic Graph
- Airflow 에서 ETL 을 부르는 명칭
- DAG는 태스크로 구성
- e.g. 3개의 태스크로 구성된다면 Extract, Transform, Load 로 구성
8. 태스크(task)란?
- Airflow의 기본 실행 단위
- Airflow 의 오퍼레이터(Operator)로 만들어짐
- Airflow 에서 이미 다양한 종류의 오퍼레이터 제공
- 경우에 맞게 사용하며, 오퍼레이터를 결정하거나 필요하다면 직접 개발
- e.g. Redshift writing, Postgres query, S3 Read/Write, Hive query, Spark job, shell script
8. DAG 구성 예제
- 3개의 Task로 구성된 DAG
- 먼저 t1 실행되고 t2,t3 순으로 순차적 실행
- 3개의 Task로 구성된 DAG
- 먼저 t1 실행되고 t2와 t3가 병렬 실행