[Airflow] 1. Airflow?

2024. 11. 7. 19:21·데이터/Airflow

Airflow?

  • 파이썬으로 작성된 데이터 파이프라인을 구축하고 관리하기 위한 오픈 소스 플랫폼!
  • 워크플로우 작성을 통해 데이터 파이프라인 스케줄링 지원

DAG?

  • DAG(Directed Acyclic Graph) : Airflow의 ETL 파이프라인!
  • Task 간의 의존 관계를 나타내는 그래프로, 방향성이 있고, 순환이 없는 그래프!
  • 각 노드는 Task를 나타내며, Edge는 Task 간의 의존성!
  • 방향성이 있기에, 특정 Task가 완료된 후에만 다음 Task 실행 가능!

Airflow Architecture

Web Server

  • Airflow의 UI를 제공하며, Flask로 작성!
  • UI를 통해 DAG의 상태를 확인하고, 모니터링 등의 작업 가능!

Scheduler

  • DAG의 실행을 스케줄링하고, 지정된 시간에 맞춰 DAG의 Task를 실행

Worker

  • 실제로 Task를 실행하는 컴포넌트
  • Scheduler에 의해 할당된 작업을 수행
  • 여러 대의 워커를 사용하면 병렬로 여러 작업 동시 실행 가능
  • 기본적으로 하나의 워커에서 여러 작업 처리 가능
  • Task Queue에서 Task를 가져와 실행하며, 작업이 완료되면 결과를 Metadata Database에 기록

Metadata Database

  • Airflow의 중앙 저장소 역할
  • DAG의 상태, Task의 상태, 실행 시간 등의 정보를 저장
  • 기본적으로 SQLite를 사용하지만, PostgreSQL, MySQL 등의 Database 사용 가능

Queue

  • Task를 Worker로 전달하는 메커니즘
  • 다수의 서버에서 분산 처리할 때 사용
  • 여러 대의 Worker가 있을 경우, Task를 Queue에 넣고 여러 대의 Worker가 Task를 병렬 처리하도록 처리
  • Worker가 실행할 Task를 가져오는 장소로 사용

Executor

  • 실제로 Task의 실행 방법을 결정하는 컴포넌트
  • Queue와 함께 사용되며, Executor는 어떤 방식으로 Task를 실행할지 정의
  • 주요 종류
    • SequentialExecutor: 하나의 Worker만 사용하여 Task를 순차적으로 실행, 개발 및 테스트 환경에 사용
      -> Default로 설치되며 Sqlite와 같은 Single Thread DB에서만 사용 가능!
    • LocalExecutor : 로컬(마스터 노드)에서 여러 Task를 병렬로 실행
    • CeleryExecutor : 여러 Worker가 분산 환경에서 Task를 처리할 수 있도록 지원, 대규모 환경에서 사용
    • KubernetesExecutor : K8s 클러스터를 사용하여 Task를 독립된 환경에서 사용
단일 서버 다중 서버


Airflow 장단점

장점

  1. 다양한 종류의 워크플로우를 유연하게 관리 가능
  2. 다양한 데이터 소스와 데이터 웨어하우스 지원
  3. 주기적인 작업 자동화를 위한 스케줄링 기능 제공
  4. Backfill이 간편
    • Backfill : 누락된 Task나 오류로 인해, 실패한 데이터 파이프라인을 재실행하거나, 실행되지 않은 작업을 재실행하는 프로세스

단점

  1. 복잡한 설정과 커스터마이징이 존재하기에, 높은 학습 난이도
  2. 복잡한 시스템을 구성해야 하기에, 높은 설정, 구성 난이도
저작자표시 (새창열림)

'데이터 > Airflow' 카테고리의 다른 글

[Airflow] 6. Slack Alert  (0) 2024.11.18
[Airflow] 5. Backfill?  (1) 2024.11.12
[Airflow] 4. Airflow.cfg?  (1) 2024.11.11
[Airflow] 3. Python Operator / Task Decorator  (1) 2024.11.10
[Airflow] 2. XCom?  (1) 2024.11.10
'데이터/Airflow' 카테고리의 다른 글
  • [Airflow] 5. Backfill?
  • [Airflow] 4. Airflow.cfg?
  • [Airflow] 3. Python Operator / Task Decorator
  • [Airflow] 2. XCom?
김줘
김줘
김줘와 같이 데이터, 컴퓨터, IT 공부
  • 김줘
    초보개발자 김줘의 코딩일기
    김줘
  • 전체
    오늘
    어제
    • 분류 전체보기
      • 데이터 엔지니어링 데브코스
      • 데이터
        • Airflow
        • Spark
        • Kafka
        • dbt
      • TroubleShooting
      • Docker
      • AWS
      • 크롤링, 스크래핑, 시각화
        • Selenium
        • 시각화
      • 코딩테스트
        • 프로그래머스
        • 입출력과 사칙연산
        • 정렬
      • Django
      • 자바 공부
      • 끄적끄적
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    자바
    데이터 엔지니어
    Java
    프로그래밍
    오블완
    부트캠프
    aws
    프로그래머스
    TiL
    에어플로우
    파이썬
    Azure
    초보개발자
    Airflow
    데이터 엔지니어링 데브코스 4기
    데이터 엔지니어링 데브코스
    cloud
    티스토리챌린지
    Python
    데브코스
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.0
김줘
[Airflow] 1. Airflow?
상단으로

티스토리툴바