강의
"Airflow"는 파이썬으로 작성된 데이터 파이프라인(ETL) 프레임워크 입니다.
- 데이터 파이프라인 스케줄링 지원
- 웹 UI도 제공
- 데이터 소스와 데이터 웨어하우스 통합 용이하게 만드는 모듈 제공
- Backfill 기능 제공
"DAG"(Direted Acyclic Graph)는 Airflow에서의 데이터 파이프라인 입니다.
하나의 DAG는 다수의 태스크로 구성되어 있습니다.
"태스트"는 Airflow의 Operator로 만들어 집니다.
이미 만들어진 오퍼레이터를 사용하거나 직접 새로운 오퍼레이터를 개발할 수 있습니다.
오퍼레이터 종류
- Redshift writing
- Postgres query
- S3 Read/Write
- Hive query
- Spark job
- shell script
Airflow 구성
Airflow 구성 컴포넌트
- 웹 서버(Web Server)
- 스케줄러 및 DAG 실행 상황 시각화
- 스케줄러(Scheduler)
- DAG를 워커에게 배정하는 역할
- 워커(Worker)
- DAG 실행하는 역할
- 메타 데이터 데이터베이스
- 스케줄러 및 DAG 실행결과 별도 저장
- SQLite 기본 설치
- 실제 프로덕션에서는 MySQL 혹은 Postgres 사용
- Executor
- Task 관리 및 실행
- 다양한 타입 존재
- Sequential Executor : 싱글스레드 DB에서만 사용 가능
- Local Executor : Airflow 마스터 노드 내에서 실행
- Celery Executor : 다수의 Worker 존재할 때, Celery 큐 이용하여 Task 분산 및 실행
- Kubernetes Executor : K8S 클러스터 이용하여 Task 독립된 환경에서 실행
- Local Kbernetes Executor
- 큐
- 다수의 서버를 사용하는 경우
Airflow 스케일링 방법
- 스케일 업 : 더 좋은 사양의 서버 사용
- 스케일 아웃 : 서버 개수 추가
Executor 종류
- Sequential Executor
- Local Executor
- Celery Executor
- Kubernetes Executor
- Celery Kubernetes Executor
- Dask Executor
Airflow 장단점
- 장점
- 세밀한 제어
- 다양한 데이터 소스 및 데이터 웨어하우스 지원
- Backfill 쉬움
- 단점
- 배우기 어려움
- 개발환경 구성 어려움
- 직접 운영 어려움 → 클라우드 버전 사용 선호
- GCP의 "Cloud Composer"
- AWS의 "Managed Workflows for Apache Airflow"
- Azure의 "Data Factory Managed Airflow"
airflow.cfg 특징
- DAGs 폴더 : Airflow 디렉토리의 dags 폴더 및 dags_folder 키 저장
- 새로운 DAG 생성할 때 스캔 주기 결정 키 : dag_dir-list_interval
- Airflow를 API 형태로 외부 조작 : api섹션의 auth_backend → airflow.api.auth.backend_auth 변경
- Variable에서 encrypted 지정 변수 이름 : password, secret, passwd, authorization, api_key, apikey, access_token
- 환경 설정 파일 수정 : sudo systemctl restrart airflow-webserver 및 sudo systemctl restrart airflow-scheduler
- Metadata DB 내용 암호화 키 : fernet_key
- 타임존 키
- default_timezone : start_date, end_date, schedule
- default_ui_timezone
- UTC : execution_date, 로그 시간
Airflow 운영 어려움
관리해야하는 DAG 수가 많아지면 여러가지 어려움이 발생할 수 있습니다.
- 라이브러리/모듈 충돌 →DAG별 혹은 Task별 별도의 독립공간(Docker Container) 생성 중요
- Worker 부족 → Scale Up 혹은 Scale Out, K8S 이용
- 낮은 Server Utilization → 서비스별 Capacity 관리 및 K8S 이용
Airflow 내에서 해결하는 방법도 존재합니다.
- Airflow Operator를 통해 KuvernetesPodOperator 사용
- Airflow Operator를 통해 DockerOperator 사용
- Airflow Executor를 통해 KubernetesExecutor 혹은 CeleryKubernetesExecutor, LocalKubernetesExecutor 사용
'데브코스 TIL > 데이터 파이프라인, Airflow' 카테고리의 다른 글
Airflow DAG 작성 예제 1, 2 (0) | 2023.12.13 |
---|---|
Airflow 기본 프로그램 실행 (0) | 2023.12.12 |
Airflow 설치 (0) | 2023.12.12 |
ETL 작성 실습 (0) | 2023.12.11 |
데이터 파이프라인 소개 (0) | 2023.12.11 |