카테고리 없음

[Airflow] Apache Airflow 살펴보기

happyst 2025. 6. 19. 09:43

데이터 파이프라인

  • 원하는 결과를 얻기 위해 실행되는 여러 태스크 또는 동작으로 구성
  • 각 태스크는 정해진 순서대로 진행되어야 함

태스크 간 의존성을 명확하게 확인하는 방법

  • 데이터 파이프라인을 그래프로 표현하는 것!
  • 태스크 = 노드 , 태스크 간 의존성 = 태스크 노드 간 방향
  • 방향성 그래프

방향성 비순환 그래프 (Directed Acyclic Graph, DAG) : 화살표 방향성의 끝점을 포함하되 반복/순환을 허용하지 않음

  • 파이프라인 실행을 위한 단순한 알고리즘을 제공
    1. 그래프 안에 태스크는 각각 개방된 상태이며 (미완료 상태) 다음 단계를 수행함
      • 각각의 화살표 끝점은 태스크를 향하며, 다음 태스크로 향하기 전에 이전 태스크가 완료되었는지 확인함
      • 태스크가 완료되면 다음에 실행해야 할 태스크를 대기열에 추가함
        (의존성이 해결되지 않으면 실행 대기열에 추가하지 않음)
    2. 실행 대기열에 있는 태스크를 실행하고, 태스크 수행이 완료되면 완료 표시를 함
    3. 그래프의 모든 태스크가 완료될 때까지 Step1로 돌아감

그래프 실행 알고리즘의 이점

  • 태스크를 병렬로 실행 가능
  • 전체 작업을 하나의 모놀리식 프로세스로 구성되는 것이 아니라, 파이프라인을 작은 점진적인 태스크로 명확히 분리 가능
    (실패한 태스크만 재실행할 수 있으므로 효율적)

Airflow 소개

  • python 스크립트로 DAG 구조 구성 ➡️ Airflow가 python 코드를 파싱하여 DAG 구조 식별
    - 각 DAG 파일은 서로 다른 태스크와 해당 의존성을 기술하는 하나의 DAG에 대해 정의
    - Airflow 실행 시기와 주기 정의
  • Airflow가 각각의 DAG 실행 주기를 정의
  • Airflow의 주요 구성 요소 3가지
    1. Airflow Scheduler : DAG 분석 / 현재 시점에서 DAG 스케줄이 지난 경우에 Airflow Worker에 DAG 태스크 예약
    2. Airflow Worker : pool로 예약된 태스크 선택 및 병렬 실행, 실행결과를 지속적으로 추적 ➡️ 해당 과정의 모든 결과는 Airflow Metastore로 전달됨
    3. Airflow Web Server : Airflow Scheduler에서 분석한 DAG 시각화 / DAG 실행과 결과 확인용 인터페이스 제공
  • 점진적 로딩 및 백필
    • 최종 시점과 예상되는 다음 스케줄 주기를 상세하게 알려줌
    • 각각의 주기로 나누고, 각 주기별로 DAG 실행 가능
    • 점진적인 파이프라인 ➡️ 기존 결과에 대한 전체적인 태스크 재수행 방지
      각 DAG는 매번 전체 데이터 세트를 다시 처리하지 않고 해당 시간 슬롯(delta 데이터)에 대한 데이터만 처리
    • 백필 ➡️  과거 데이터를 손쉽게 재처리
      과거 특정 기간에 대해 DAG를 실행하여 새로운 데이터 세트를 생성 (백필)할 수 있음

Airflow는 언제 사용할까?!

  • 배치 지향 데이터 파이프라인 구현에 적합
  • 파이썬 코드 사용
  • 확장 가능, 다양한 시스템과 통합 가능
  • 점진적 파이프라인 실행
  • 백필 기능
  • 웹 인터페이스를 통한 모니터링 & 디버깅

Airflow... 이런 경우에는 그닥

  • 실시간 데이터 처리, 스트리밍 워크플로에는 적합하지 않음
  • 추가 및 삭제 태스크가 빈번한 동적 파이프라인의 경우 (실행되는 동안 구조가 변경되지 않은 파이프라인에 더 적합)
  • 파이썬 프로그래밍 경험 미흡

 

 

 

 

 

 

출처 도서: Apache Airflow 기반의 데이터 파이프라인