이번주 월요일부터 Airflowd의 기본 개념과 설치하는 방법을 학습했다.
학습을 진행하며 워커, 스케줄러 등 Airflow 구성요소와,
스케일링 방법을 배울 수 있었다.
차례대로 Airflow 정의와 구성 요소등을 정리하고, 다음 글에 이어서 설치하는 법을 정리하겠다.
01. Airflow란
가장 많이 사용되는 데이터 파이프라인 관리/작성 프레임워크
Airflow는 파이썬으로 작성된 데이터 파이프라인 (ETL) 프레임워크
- 데이터 파이프라인 스케줄링 지원
- 정해진 시간에 ETL 실행 혹은 한 ETL의 실행이 끝나면 다음 ETL 실행
- 웹 UI 제공
- 데이터 파이프라인(ETL)을 쉽게 만들 수 있음
- 다양한 데이터 소스와 데이터 웨어하우스를 쉽게 통합해주는 모듈 제공
- Backfill 등 데이터 파이프라인 관리 관련한 다양한 기능 제공
- Airflow에서는 데이터 파이프라인 = DAG(Directed Acyclic Graph)
- 하나의 DAG는 하나 이상의 태스크로 구성됨
- 태스크 단위로 코드를 실행함. 스케줄러가 태스크를 관리함
02. 컴포넌트 구성
- 웹 서버 (Web Server)
- python, flask로 구현됨
- 스케줄러 (Scheduler)
- 데이터 파이프라인을 정해진 순서에 맞게 실행 혹은 트리거 전담
- 스케줄러의 Executor를 통해서 워커들에게 Task를 넘기는데, Executor의 종류에 따라 큐를 쓰기도하고 안 쓰기도 한다.
- executor 종류
- Sequential Executor (기본)
- Local Executor
- Celery Executor
- Kubernetes Executor
- CeleryKubernetes
- Executor
- Dask Executor
- 워커 (Worker)
- 태스크에 해당하는 코드를 실행해줌
- 늘어난 서버는 워커용으로 사용됨 (스케일링)
- 메타 데이터 데이터베이스
- 스케줄링 정보, 워커 정보, 데이터 파이프라인의 정보 등을 저장하는 용도
- 기본은 Sqlite
- sqlite은 성능이 좋지 않기에, mysql나 postgresql로 바꿔서 사용함
- 큐
- 큐에 task를 집어 넣고 , 놀고 있는 워커가 생기면 큐의 task를 할당해줌
- 스케줄러의 executor에 따라 달라짐
03. Airflow 구성
- 스케줄러는 DAG안의 Task들을 워커들에게 배정함
- 스케줄러의 Executor를 통해서 워커들에게 Task를 넘기는데, Executor의 종류에 따라 큐를 쓰기도하고 안 쓰기도 한다.
- 이는 웹 UI로 스케줄러와 DAG 실행 상황 시각화 가능
- 워커는 실제 DAG의 Task를 실행함
- DAG 실행 결과는 별도 DB에 저장됨
- 기본적으로 설치되는 DB는 SQLite
- 실제 프로덕션에서는 MySQL이나 Postgres 사용함
- 워커의 수는 서버의 cpu 수
- 용량 증대 시, worker를 서버로 별도로 분리하고 그 서버 수를 늘리는 방식으로 진행함
04. Airflow 스케일링 방법
- Scale up : 더 좋은 사양 사용하기
- Scale Out : 서버 추가
Tips!
- 서버 한대에서 시작하면 Scale out보다 Scale Up하기 (비용 절감)
- Scale out 을 한다면, 에어플로우를 제공해주는 클라우드 서비스 사용하는 것이 좋음
05. Airflow 장단점
장점
- 데이터 파이프라인 세밀하게 제어 가능
- 다양한 데이터소스, 데이터웨어하우스 지원
- 백필 쉬움
단점
- 러닝커브 존재
- 상대적으로 개발환경 구성 어려움
- 직접 운영 쉽지 않아 클라우드 버전 사용이 선호됨
- GCP_Cloud Composer
- AWS_Managed Workflows for Apache Airflow
- Azure_Data Factory Managed Airflow
06. DAG란
Directed Acyclic Graph
Airflow의 ETL
DAG는 1개 이상의 태스크로 구성됨
- 태스크는 Airflow의 오퍼레이터(Operator)로 만들어짐
- 다양한 종류의 오퍼레이커 제공함. 직접 맞춤 개발도 가능
Airflow 기본 개념을 알아보았으니, 이어서 설치해보고 간단한 실습을 진행해보자
다음글 (Airflow 설치) : https://hyem207.tistory.com/107
'#️⃣ Data Engineering > Airflow' 카테고리의 다른 글
Airflow 실습_OpenAPI와 Upsert를 이용한 DAG (0) | 2023.06.08 |
---|---|
Airflow 실습_기본코드 정리 및 ETL 코드 개선하기 (0) | 2023.06.07 |
Airflow 설치(Docker-compose)와 간단한 실습 (0) | 2023.06.07 |
데이터 파이프라인(ETL) 정의 및 설계 시 고려할 점 + 실습 (0) | 2023.06.05 |
[Airflow] Airflow 설치 (Docker 이용) (0) | 2022.02.06 |