Apache Airflow

Apache Airflow란?

비번변경 2022. 7. 18. 22:03

Apache Airflow

Apache Airflow 로고

프로그래밍 방식으로 워크플로우(일련의 작업의 흐름)를 작성, 예약 및 모니터링하는 오픈 소스 플랫폼

작업을 정확한 시간에, 정확한 방법으로, 정확한 순서대로 실행하게 해주는 오케스트레이터

에어비엔비에서 개발했으며, Apache 인큐베이터 프로젝트로 선정된 지 3년 만에 탑 레벨 프로젝트로 선정되었다.

 

 

장점

Dynamic Data Pipeline

데이터 파이프라인을 정의하는데 Python을 이용한다. 따라서 Python으로 가능한 대부분의 작업을 Airflow 파이프라인에서 처리할 수 있으며, 동적인 구성이 가능하다.

 

Scalability

Airflow는 확장성이 뛰어나다. 다양한 task를 병렬적으로 실행할 수 있으며, 쿠버네티스 클러스터, 분산 클러스터 환경에서 파이프라이닝이 가능한다.

 

편리한 사용자 인터페이스

웹 서버에서 제공하는 웹 인터페이스를 통해 데이터 파이프라인을 모니터링하고 관리하기 편하다.

 

High Extensiblility

플러그인 설치가 쉽다. 새로운 작업 툴이 나와 적용하고자 할 때는 에어플로우가 툴을 지원할 때까지 기다릴 필요 없이 플러그인을 개발해서 적용할 수 있다.

 

 

코어 컴포넌트

airflow 동작 원리

  • Scheduler : 워크플로우를 스케쥴링하는 스케쥴러 데몬. 모든 DAG와 태스크를 모니터링하고 관리하며, 주기적으로 실행해야 할 태스크를 찾고 해당 태스크를 실행 가능한 상태로 변경한다.
  • DAG Script : 개발자가 작성한 Python 워크플로우 스크립트
  • Web Server : 에어플로우 웹 인터페이스를 제공하는 웹 서버. flask, gunicorn을 사용한다.
  • MetaStore : 어떤 DAG가 존재하고 어떤 태스크로 구성되는지, 어떤 태스크가 실행 중이고 실행 가능한 상태인지 등의 메타데이터가 저장되는 데이터베이스. Postgresql를 추천하지만, mysql, sqlite도 사용 가능하다.
  • Executer : 어떤 환경에서 task가 실행될지에 대한 타입 정의. 태스크 인스턴스를 실행하는 주체로, 다양한 타입이 존재한다.
  • Worker : 실체 task를 처리하는 컴포넌트
  • Kerberos : 인증 처리를 위한 프로세스로 필수 사항은 아니다.

 

 

주요 개념

DAG

Directed Acyclic Graph; 유향 비순환 그래프

DAG

Airflow는 Task의 연결 관계를 DAG로 관리하고, 웹 인터페이스를 통해 DAG 구조를 시각적으로 확인할 수 있다.

 

Operator

  • Task의 Wrapper 역할로, 원하는 작업을 달성하기 위해 존재한다.
  • Action Operator : 기능, 명령을 실행한다. (ex. bash Operator, Python Operator)
  • transfer Operator : Source에서 Destination으로 데이터를 전송한다.
  • Sensor Operator : 특정 조건을 감지하면 실행된다. 조건이 만족할 때까지 기다렸다가, 조건이 충족되면 다음 Task를 실행한다.

 

Task

데이터 파이프라인에 존재하는 Operator

테이터 파이프라인이 트리거 되어 실행될 때 생성된 task를 Task Instance라고 한다.

 

Workflow

DAG를 통해 태스크 간의 의존성을 정의하고, 각 태스크를 오퍼레이터로 실행하는 일련의 과정으로 정의된다.

 

 

참고 문서

https://velog.io/@jjongbumeee/Airflow1

https://engineering.linecorp.com/ko/blog/data-engineering-with-airflow-k8s-1/

 

 

728x90