ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Data Pipelines with Apache Airflow] 1. Apache Airflow 살펴보기
    Software Development/Data Engineering 2022. 6. 22. 00:19

    해당 블로그의 내용은 책(Apache Airflow 기반의 데이터 파이프라인)을 요약 정리한 것입니다.

     

    Airflow의 주요 기능은 유연한 파이썬 프레임워크를 사용해 쉽게 데이터 파이프라인을 구축할 수 있게 해 주며, 최신 기술 환경에서 접하게되는 서로 다른 기술들을 연결.

     

    1.1 데이터 파이프라인 소개

    1.1.1 데이터 파이프라인 그래프

    DAG 방향성 비순환 그래프, 방향이 있는데 순환은 안하는 그래프. 비순환 속성은 태스크 간의 순환 실행을 방지.

    순환 의존성은 논리적 오류로 인한 교착상태로 이어질 수 있다.

    1.1.2 파이프라인 그래프 실행

    DAG는 파이프라인 실행을 위한 단순한 알고리즘을 제공한다는 이점을 제공.

    1. 그래프 안에 태스크는 각각 개방된 상태(미완료)이며 다음과 같은 단계를 수행.

    • 각각의 화살표 끝점은 태스크를 향하며 다음 태스크로 향하기 전에 이전 태스크가 완료되었는지 확인.
    • 태스크 완료시 다음에 실행할 태스크를 대기열에 추가.

    2. 실행 대기열에 있는 태스크 실행. 태스크 수행이 완료되면 완료 표시.

    3. 그래프의 모든 태스크가 완료될 때까지 1단계로 반복.

    1.1.3 그래프 파이프라인과 절차적 스크립트 파이프라인 비교

    그래프에 실행 알고리즘을 적용하면 태스크를 병렬로 실행할 수 있기에 가용 컴퓨팅 리소스를 더 효율적으로 활용할 수 있다.

    점진적인 태스크로 명확하게 분리하여 실패 후, 전체 재실행이 아니라 실패 태스크만 재실행.

    1.2 Airflow 소개

    1.2.1 파이썬 코드로 유연한 파이프라인 정의

    Airflow는 파이썬 스크립트로 DAG의 구조를 설명하고 구성.

    각 DAG 파일은 주어진 DAG에 대한 태스크 집합과 태스크 간의 의존성을 기술.

    Airflow는 DAG 구조를 식별하기 위해 코드를 파싱.

     

    파이썬 코드로 DAG를 정의할 시에 유연성이 장점.

    1.2.2 파이프라인 스케줄링 및 실행

    Airflow 구성 요소

    • Airflow 스케줄러 - DAG를 분석하고 현재 시점에서 DAG의 스케줄이 지난 경우 Airflow 워커에 DAG의 태스크를 예약.
    • Airlfow 워커 - 예약된 태스크를 선택하고 실행.
    • Airflow 웹 서버 - 스케줄러에서 분석한 DAG를 시각화하고 DAG 실행과 결과를 확인할 수 있는 인터페이스 제공.

    Airflow 스케줄러

    • 사용자가 DAG 워크플로를 작성하면, 스케줄러는 DAG 파일을 분석하고 각 DAG 태스크, 의존성 및 예약 주기를 확인.
    • 스케줄러는 마지막 DAG까지 내용을 확인한 후 DAG의 예약 주기가 경과했는지 확인. 예약 주기가 현재 시간 이전이라면 실행되도록 예약.
    • 예약된 각 태스크에 대해 스케줄러는 해당 태스크의 의존성을 확인. 의존성 태스크가 완료되지 않았다면 실행 대기열에 추가.
    • 스케줄러는 1단계로 다시 돌아간 후 새로운 루프를 잠시 동안 대기.

    1.2.4 점진적 로딩 및 백필

    Airflow의 스케줄 기능은 DAG에 정의된 특정 시점에 트리커할 수 있을 뿐만 아니라 최종 시점과 예상되는 다음 스케줄 주기를 상세하게 알려준다.

    백필 기능을 사용하면 과거 데이터를 손쉽게 재처리.

    1.3 언제 Airflow를 사용해야 할까

    1.3.1 Airflow를 선택하는 이유

    배치 지향, 복잡한 커스텀 파이프라인 구현 가능, 다양한 시스템과 통합 용이, 점진적 처리, 백필 기능을 통한 과거데이터 재처리, 훌륭한 웹 인터페이스.

    1.3.1 Airflow가 적합하지 않은 경우

    스트리밍, 추가 및 삭제 태스크가 빈번한 동적 파이프라인, 파이썬에 익숙하지 않은 경우, DAG 관리에는 유지 비용이 들기 때문에 엄격한 관리가 요구.

    댓글

Designed by Tistory.