본문 바로가기
Development/Data Engineering

[Apache Airflow] 아파치 에어플로우란?

by _KHK 2022. 4. 16.

Apache Airflow 아파치 에어플로우

에어비엔비에서 개발한 워크플로우 스케쥴링, 모니터링 플랫폼

아파치 탑 레벨 프로젝트

 

에어비엔비, 야후, 페이팔, 인텔, 스프라이프 등 여러 회사들이 사용중이다.

대형 프로젝트들에서 겪고 있는 공통적인 문제가 있고 이러한 문제를 아파치 에어플로우가 해결해 줄 수 있다.

 

에어플로우를 사용하는 이유

한 두개의 파이프라인을 관리하는것은 스케쥴링, 모니터링이 어렵지 않다.

하지만 관리해야 하는 파이프라인이 수십개가 있다면?

파이프라인마다 의존성이 복잡한 경우라면? 

 

에어플로우는 워크 플로우를 작성, 스케쥴링, 모니터링을 쉽게 할 수있게 해주는 플랫폼이기 때문에 사용 한다.

* 워크 플로우란 의존성으로 연결된 작업(task)의 집합 => DAG(Directed Acyclic Graph)

 

Crontab등 기존 스케쥴링, 모니터링 방식의 문제점

- 실패 복구 : 언제 어떤 시점에서 어디서 문제가 생겼는지 파악이 힘들고, backfill이 힘들다.

- 모니터링 : 수십개의 파이프라인을 실시간 확인이 힘들다.

- 의존성 관리 : 데이터 파이프라인간 의존성이 있는 경우 상위 데이터 파이프라인에 대한 관리(의존성 파악, 실행되고 있는지)가 어렵다.

- 확장성 : 중앙화 해서 관리하는 툴이 없기 때문에 분산된 환경에서 파이프라인들을 관리하기 힘들다.

- 배포 : 새로운 워크플로우를 배포하기 까다롭다.

 

에어플로우의 특징

  • 확장성 :분산구조와 메시지큐를 이용해 다양한 워커간 협업이 가능하기 때문에 스케일아웃이 가능하다.
  • 파이썬 : 에어플로우의 파이프라인은 파이썬 코드로 작성하기때문에 동적 파이프라인을 정의할 수 있다.
  • 커스터마이징 : 자신의 환경에 맞게 operator를 정의 할 수 있고 라이브러리를 확장 할 수있다.
  • Elegant : 우아한? 보다 간결하다. 에어플로우의 파이프라인 작성은 간결하며 명시적이다.
  • 실시간 웹 대시보드 UI 제공된다.

 

에어플로우 구성 컴포넌트

이미지 출처 https://blog.kmong.com/복잡한-스케줄-airflow로-쉽게-관리하기-71ccf026b5fe

  • Web Server - UI를 제공하고 사용자가 스케줄 관리와 디버깅 가능
  • Scheduler - 스케쥴을 관리하고, executor에게 작업 수행 요청
  • Metastore - 스케쥴러나 Executor, 웹 서버에서 사용하는 메타데이터를 저장
  • Executor - task가 어떻게 실행되는지 정의
  • Worker - task가 실제로 실행되는 프로세스

 

에어플로우의 동작 방식

  1. DAG를 작성하여 Workflow를 만든다. DAG는 Task로 구성되어 있다.
  2. Task는 Operator가 인스턴스화 된 것
  3. DAG를 실행시킬 때 Scheduler는 DagRun 오브젝트를 만든다
  4. DagRun 오브젝트는 Task Object를 만든다.
  5. Worker가 Task를 수행 후 DagRun의 상태를 "완료"로 바꾼다.

 

 

* Operator  : 작업을 정의하는데 사용

- Action Operator : 실제 연산 수행

- Transfer Operator : 데이터를 옮김

- Sensor Operator : 테스크를 언제 실행시킬 트리거를 기다림.

댓글