본문 바로가기

데이터엔지니어링

[데이터엔지니어링] Airflow 실습(2) - Airflow 간단 설명

 Airflow를 통해서 스케줄링을 하는 예시 이전에 Airflow란 무엇인지, 기본 구조는 무엇인지에 대해서 설명하겠다.

Airflow란?

  • Workflow Management Tool로, Workflow란 ETL과 같은 작업의 흐름을 말한다.
  • Workflow는 DAG task라는 단위로 다양하게 구성할 수 있다.
  • Airflow는 Python코드로 쉽게 workflow를 구성한다는 장점이 있다.
  • 워크플로우 관리 도구의 주요 역할은 ‘ 정기적으로 태스크를 실행’하고 ‘비정상적인 상태를 감지하여 그것에 대한 해결을 돕는’것이다.

Airflow Architecture

https://airflow.apache.org/docs/apache-airflow/2.0.1/concepts.html

Scheduler

  • 스케줄된 workflow 를 trigger 하고, task 를 executor 에 실행하도록 제출
  • 모든 task와 DAG를 모니터링
  • 1분(default 값)에 한 번씩 모든 DAG들의 정보를 업데이트, 상태 정보를 확인

Executor

  • Task의 실행을 관리
  • Task의 실행을 스케줄러 서버 내부 또는 외부의 worker에게 맡김.
  • Local Executor, Sequential Executor, Celery Executor, Kubernetes Executor 등의 종류가 있다.

Webserver

  • 유저가 DAG나 task의 상태를 관리하는 web interface 도구
  • 여러가지 공통 설정을 관리, 매뉴얼한 작업의 수정, 디버깅도 가능

DAG

  • Directed Acyclic Graph의 약자로, 방향성이 있는 비순환 그래프. 
  • 작업의 흐름이나 의존성을 정의하는데 사용, 여러 작업들 간의 실행 순서와 의존성을 표현하는 그래프
  • python 파일은 스케줄러와 executor 가 읽을 수 있는 dags 경로에 있다.
    • dags/~~dag.py 경로에 있어야 읽을 수 있다.

Metadata Database

  • 작업의 정의, 상태, 실행 정보, 결과정보, 로그 등을 관리하는 데이터베이스

 

DAG를 선언할 때 정의하는 Default Argument, Operator , Task, Dependency는 실습을 진행하면서 설명하겠다!!