데브코스 TIL/데이터 파이프라인, Airflow

Airflow 소개

예니ㅣ 2023. 12. 11. 17:06

강의

"Airflow"는 파이썬으로 작성된 데이터 파이프라인(ETL) 프레임워크 입니다.

  • 데이터 파이프라인 스케줄링 지원
  • 웹 UI도 제공
  • 데이터 소스와 데이터 웨어하우스 통합 용이하게 만드는 모듈 제공
  • Backfill 기능 제공

Airflow 웹 UI

 

"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 관리 및 실행
    • 다양한 타입 존재
      1. Sequential Executor : 싱글스레드 DB에서만 사용 가능
      2. Local Executor : Airflow 마스터 노드 내에서 실행
      3. Celery Executor : 다수의 Worker 존재할 때, Celery 큐 이용하여 Task 분산 및 실행
      4. Kubernetes Executor : K8S 클러스터 이용하여 Task 독립된 환경에서 실행
      5. Local Kbernetes Executor
    • 다수의 서버를 사용하는 경우

Airflow 구조

 

Airflow 스케일링 방법

  • 스케일 업 : 더 좋은 사양의 서버 사용
  • 스케일 아웃 : 서버 개수 추가

 

Executor 종류

  • Sequential Executor
  • Local Executor
  • Celery Executor
  • Kubernetes Executor
  • Celery Kubernetes Executor
  • Dask Executor

 


Airflow 장단점

  • 장점
    • 세밀한 제어
    • 다양한 데이터 소스 및 데이터 웨어하우스 지원
    • Backfill 쉬움
  • 단점
    • 배우기 어려움
    • 개발환경 구성 어려움
    • 직접 운영 어려움 → 클라우드 버전 사용 선호
      1. GCP의 "Cloud Composer"
      2. AWS의 "Managed Workflows for Apache Airflow"
      3. 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