-
[Airflow] Apache Airflow 살펴보기카테고리 없음 2025. 6. 19. 09:43
데이터 파이프라인
- 원하는 결과를 얻기 위해 실행되는 여러 태스크 또는 동작으로 구성
- 각 태스크는 정해진 순서대로 진행되어야 함
태스크 간 의존성을 명확하게 확인하는 방법
- 데이터 파이프라인을 그래프로 표현하는 것!
- 태스크 = 노드 , 태스크 간 의존성 = 태스크 노드 간 방향
- 방향성 그래프
방향성 비순환 그래프 (Directed Acyclic Graph, DAG) : 화살표 방향성의 끝점을 포함하되 반복/순환을 허용하지 않음
- 파이프라인 실행을 위한 단순한 알고리즘을 제공
- 그래프 안에 태스크는 각각 개방된 상태이며 (미완료 상태) 다음 단계를 수행함
- 각각의 화살표 끝점은 태스크를 향하며, 다음 태스크로 향하기 전에 이전 태스크가 완료되었는지 확인함
- 태스크가 완료되면 다음에 실행해야 할 태스크를 대기열에 추가함
(의존성이 해결되지 않으면 실행 대기열에 추가하지 않음)
- 실행 대기열에 있는 태스크를 실행하고, 태스크 수행이 완료되면 완료 표시를 함
- 그래프의 모든 태스크가 완료될 때까지 Step1로 돌아감
- 그래프 안에 태스크는 각각 개방된 상태이며 (미완료 상태) 다음 단계를 수행함
그래프 실행 알고리즘의 이점
- 태스크를 병렬로 실행 가능
- 전체 작업을 하나의 모놀리식 프로세스로 구성되는 것이 아니라, 파이프라인을 작은 점진적인 태스크로 명확히 분리 가능
(실패한 태스크만 재실행할 수 있으므로 효율적)
Airflow 소개
- python 스크립트로 DAG 구조 구성 ➡️ Airflow가 python 코드를 파싱하여 DAG 구조 식별
- 각 DAG 파일은 서로 다른 태스크와 해당 의존성을 기술하는 하나의 DAG에 대해 정의
- Airflow 실행 시기와 주기 정의 - Airflow가 각각의 DAG 실행 주기를 정의
- Airflow의 주요 구성 요소 3가지
- Airflow Scheduler : DAG 분석 / 현재 시점에서 DAG 스케줄이 지난 경우에 Airflow Worker에 DAG 태스크 예약
- Airflow Worker : pool로 예약된 태스크 선택 및 병렬 실행, 실행결과를 지속적으로 추적 ➡️ 해당 과정의 모든 결과는 Airflow Metastore로 전달됨
- Airflow Web Server : Airflow Scheduler에서 분석한 DAG 시각화 / DAG 실행과 결과 확인용 인터페이스 제공
- 점진적 로딩 및 백필
- 최종 시점과 예상되는 다음 스케줄 주기를 상세하게 알려줌
- 각각의 주기로 나누고, 각 주기별로 DAG 실행 가능
- 점진적인 파이프라인 ➡️ 기존 결과에 대한 전체적인 태스크 재수행 방지
각 DAG는 매번 전체 데이터 세트를 다시 처리하지 않고 해당 시간 슬롯(delta 데이터)에 대한 데이터만 처리 - 백필 ➡️ 과거 데이터를 손쉽게 재처리
과거 특정 기간에 대해 DAG를 실행하여 새로운 데이터 세트를 생성 (백필)할 수 있음
Airflow는 언제 사용할까?!
- 배치 지향 데이터 파이프라인 구현에 적합
- 파이썬 코드 사용
- 확장 가능, 다양한 시스템과 통합 가능
- 점진적 파이프라인 실행
- 백필 기능
- 웹 인터페이스를 통한 모니터링 & 디버깅
Airflow... 이런 경우에는 그닥
- 실시간 데이터 처리, 스트리밍 워크플로에는 적합하지 않음
- 추가 및 삭제 태스크가 빈번한 동적 파이프라인의 경우 (실행되는 동안 구조가 변경되지 않은 파이프라인에 더 적합)
- 파이썬 프로그래밍 경험 미흡
출처 도서: Apache Airflow 기반의 데이터 파이프라인