Airflow 소개
- 파이썬으로 작성된 데이터 파이프라인 프레임워크, 데이터 파이프라인 스케쥴링을 지원
- 정해진 시간에 ETL 실행 혹은 한 ETL의 실행이 끝나면 다음 ETL 실행
- 웹 UI를 제공하기도 함
- 데이터 파이프라인(ETL)을 쉽게 만들 수 있도록 해줌
- 다양한 데이터 소스와 데이터 웨어하우스를 쉽게 통합해주는 모듈 제공 (https://airflow.apache.org/docs/)
- 데이터 파이프라인 관리 관련 다양한 기능을 제공해줌 - 특히 Backfill
- Airflow에서는 데이터 파이프라인을 DAG(Directed Acyclic Graph)라고 부름
- 하나의 DAG는 하나 이상의 태스크로 구성됨
- Operator를 사용해 Task를 정의함 ⇒ Operator가 인스턴스화가 될 경우 Task라고 함
- Python Operator, Bash Operator, BigQuery Operator, Dataflow Operator 등
- Operator는 unique한 task_id를 가져야 하고, 오퍼레이터별 다른 파라미터를 가지고 있음
💡 Airflow 버전 선택 방법: 큰 회사(GCP 등)에서 사용하는 버전이 무엇인지 확인하기 |
Airflow 구성
- Web Server
- Web UI를 담당
- REST API를 제공하기 때문에 꼭 Web UI를 통하지 않아도 통신 가능
- Scheduler
- 각종 메타 정보의 기록을 담당
- DAG Directory 내 .py 파일에서 DAG를 파싱하여 DB에 저장
- DAG들의 스케쥴링 관리 및 담당
- 실행 진행 상황과 결과를 DB에 저장
- Executor를 통해 실제로 스케쥴링된 DAG를 실행
- Worker
- DAG를 실제로 실행시키는 역할
- Database
- 메타 정보를 저장
- Scheduler에 의해 메타 데이터가 쌓임
- Sqlite가 기본이나 보통 MySQL이나 Postgres를 사용
- Queue (멀티노드 구성인 경우에만 사용)
- DAG Directory: DAG 파일들을 저장함
Airflow 스케일링 - 스케일 업: 더 좋은 사양의 서버를 사용 - 스케일 아웃: 서버를 추가하는 것 => Docker와 K8S를 사용하여 스케일 아웃하는 방법을 사용함 |
Airflow 개발의 장단점
- 장점
- 데이터 파이프라인을 세밀하게 컨트롤 가능
- 다양한 데이터 소스와 데이터 웨어하우스를 지원
- 백필(Backfill)이 쉬움
- 단점
- 배우기가 쉽지 않음
- 상대적으로 개발환경을 구성하기 쉽지 않음
- 직접 운영이 쉽지 않음. 클라우드 버전 사용이 선호됨
- GCP, AWS, Azure
DAG란 무엇인가?
- Directed Acyclic Graph의 줄임말
- 방향성이 있으나, 순환은 안 됨
- Airflow에서 ETL을 부르는 명칭
- DAG는 태스크로 구성됨
- 예를 들어 E, T, L 3개의 태스크로 구성될 수 있음
- 태스크는 Airflow의 오퍼레이터(operator)로 만들어짐
- Airflow에서 이미 다양한 종류의 오퍼레이터를 제공
- 만들어진 것을 가져다 쓰거나 직접 개발하여 사용
- Ex) Redshift writing, Postgres query, S3 Read//write, hive query
'Data Engineering' 카테고리의 다른 글
[실날데] 실리콘밸리에서 날아온 데이터 엔지니어링 스타터 키트 - 3주차: 데이터 파이프라인을 만들 때 고려해야 할 점 (0) | 2023.06.22 |
---|---|
[실날데] 실리콘밸리에서 날아온 데이터 엔지니어링 스타터 키트 - 3주차: 데이터 파이프라인이란? (1) | 2023.06.18 |
[실날데] 실리콘밸리에서 날아온 데이터 엔지니어링 스타터 키트 2주차 - 빅데이터 세상에도 SQL은 중요할까? (0) | 2023.06.15 |
[실날데] 실리콘밸리에서 날아온 데이터 엔지니어링 스타터 키트 1주차 - Redshift 소개 (1) | 2023.06.09 |
[실날데] 실리콘밸리에서 날아온 데이터 엔지니어링 스타터 키트 1주차 - 데이터 팀 소개 (0) | 2023.06.09 |