묠니르묘묘
꾸준히 성장하는 개발자스토리
묠니르묘묘
전체 방문자
오늘
어제
  • 분류 전체보기 (188)
    • 프로그래밍 (48)
      • 디자인패턴 (4)
      • 예외,에러 (4)
      • Java (29)
      • Kotlin (3)
      • React.js (4)
      • JavaScript (2)
      • Apache Kafka (2)
    • Spring (49)
      • Spring (21)
      • Spring Cloud (3)
      • JPA (25)
    • 코딩테스트 (31)
      • 알고리즘 (5)
      • Java - 백준 (26)
      • Java - 프로그래머스 (0)
    • AWS (7)
    • 데이터베이스 (6)
    • 개발 etc (23)
    • 도서 (5)
    • 회고록 (4)
    • 데브코스-데이터엔지니어링 (15)

인기 글

최근 글

hELLO · Designed By 정상우.
묠니르묘묘

꾸준히 성장하는 개발자스토리

Airflow 란 무엇인가?
데브코스-데이터엔지니어링

Airflow 란 무엇인가?

2024. 5. 26. 15:45

1. Airflow 소개

  • 파이썬으로 작성된 데이터 파이프라인(ETL) 프레임워크
    • Airbnb에서 시작한 아파치 오픈소스 프로젝트
    • 가장 많이 사용되는 데이터 파이프라인 관리 및 작성 프레임워크
  • 데이터 파이프라인 스케줄링 지원
    • 정해진 시간에 ETL 실행 or 한 ETL의 실행이 끝나면 다음 ETL 실행
    • 웹 UI 제공
  • 데이터 파이프라인(ETL)을 쉽게 만들 수 있게 해줌
    • 다양한 데이터 소스와 데이터 웨어하우스를 쉽게 통합해주는 모듈 제공
    • https://airflow.apache.org/docs/
  • 데이터 파이프라인을 DAG(Directed Acyclic Graph)라고 부름
    • 1개의 DAG는 1개 이상의 태스크(task)로 구성

 

2. Airflow 구성

  • 웹 서버(Web Server)
    • 웹 UI는 스케줄러와 DAG의 실행 상황을 시각화해줌
    • Python Flask로 구현되어 있음
  • 스케줄러 (Scheduler)
    • DAG들을 워커들에게 배정하는 역할 수행
    • 스케줄러와 각 DAG의 실행 결과는 별도 DB에 저장됨
    • 정해진 시간에 실행되게 할 수 있으며, 순차적 태스크 진행
  • 워커 (Worker)
    • DAG를 실행하는 역할 수행
  • 메타 데이터 데이터베이스 (Metadata Database)
    • SQLite 가 기본 설치
    • 실제 프로덕션에서는 MySQL 이나 Postgres 를 사용해야 함
  • 큐 (Queue)
    • 다수 서버 구성인 경우에만 사용
    • 이 경우 Executor가 달라짐

 

3. Airflow 구조 : 서버 한대

Airflow 서버 한대 구조

 

4. Airflow 구조 : 다수 서버

Airflow 서버 다수 구조

  • 스케일링 할 때는 워커를 별도의 서버에서 돌리고, 워커가 있는 서버의 수를 늘리는 형태로 용량 증대

 

5. Airflow 구조

Airflow 구조

  • 사용자는 UI 를 통해서 웹 서버와 통신
  • Airflow 서버 안에는 DAG Directory 가 있고, 여기에 파이썬으로 작성된 데이터 파이프라인 코드가 있음
  • 위 다렉토리를 Airflow가 주기적으로 파싱해서 Metadata DB에 기록
  • 스케줄러가 Executor 를 통해서 워커들에게 일을 주는데, Executor 특성에 따라서 Queue 가 있기도 하고 없기도 함

 

6. Airflow 개발 장단점

장점

  • 데이터 파이프라인 세밀하게 제어 가능
  • 다양한 데이터 소스와 데이터 웨어하우스 지원
  • 백필(Backfill) 쉬움

단점

  • 배우기 쉽지 않음
  • 상대적으로 개발환경 구성하기 쉽지 않음
  • 직접 운영이 쉽지 않으며, 클라우드 버전 사용이 선호됨
    • GCP provides "Cloud Composer"
    • AWS provides "Managed Workflows for Apache Airflow"
    • Azure provides "Data Factory Managed Airflow"

 

7.  DAG 란?

  • Directed Acyclic Graph
  • Airflow 에서 ETL 을 부르는 명칭
  • DAG는 태스크로 구성
    • e.g. 3개의 태스크로 구성된다면 Extract, Transform, Load 로 구성

 

8. 태스크(task)란?

https://magpienote.tistory.com/193

  • Airflow의 기본 실행 단위
  • Airflow 의 오퍼레이터(Operator)로 만들어짐
  • Airflow 에서 이미 다양한 종류의 오퍼레이터 제공
  • 경우에 맞게 사용하며, 오퍼레이터를 결정하거나 필요하다면 직접 개발
  • e.g. Redshift writing, Postgres query, S3 Read/Write, Hive query, Spark job, shell script

 

8. DAG 구성 예제

  • 3개의 Task로 구성된 DAG
  • 먼저 t1 실행되고 t2,t3 순으로 순차적 실행

 

  • 3개의 Task로 구성된 DAG
  • 먼저 t1 실행되고 t2와 t3가 병렬 실행
저작자표시 비영리 변경금지 (새창열림)

'데브코스-데이터엔지니어링' 카테고리의 다른 글

빅데이터의 파일 형식은 무엇으로 해야할까? (feat. Parquet 란?)  (0) 2024.08.29
Airflow 설치 - Docker  (0) 2024.05.23
장고 활용한 API 서버 만들기(2)  (0) 2024.04.23
장고 활용한 API 서버 만들기  (0) 2024.04.09
Seaborn 시각화 라이브러리, 기상청 날씨 정보 시각화, 해시코드 질문태그 빈도 시각화, 단어구름 시각화  (0) 2024.04.06
    '데브코스-데이터엔지니어링' 카테고리의 다른 글
    • 빅데이터의 파일 형식은 무엇으로 해야할까? (feat. Parquet 란?)
    • Airflow 설치 - Docker
    • 장고 활용한 API 서버 만들기(2)
    • 장고 활용한 API 서버 만들기
    묠니르묘묘
    묠니르묘묘

    티스토리툴바