Apache Airflow

newhyork·2022년 6월 13일
0

Apache Airflow


  • Airbnb에서 개발한, Python을 이용하여 workflow를 관리할 수 있는 도구이다.
  • 주로 data engineering 및 MLOps 영역에서
    workflow를 작성, 스케줄링, 모니터링 하고자 할 때 사용한다.
    • 데이터 파이프라인 구축 시 ETL 의 경우,
      데이터를 Extraction → Transformation → Loading하는 작업 흐름이 있다.
      이러한 workflow를 관리할 때 사용하는 툴이다.
    • ML 방면의 경우,
      모델 학습용 데이터 전처리 → train → predict 흐름에 사용한다.
  • 단순히 batch 작업을 스케줄링하는 용도로도 사용하곤 한다.

components


web server

  • Airflow 웹 서버에서 Web UI를 제공하여, 사용자는 이를 통해 시각적으로 정보를 얻을 수 있다.
    • scheduler에 의해 생성된 DAG 목록, task 상태 등을 시각화한 것을 볼 수 있다.
    • task를 수행함에 따른 로그를 확인할 수 있다.

scheduler

  • scheduler를 실행함으로써, 설정해둔 schedule에 따라 DAG들을 trigger한다.
    • executor에게 task를 제공해주는 역할을 한다.
  • DAG 디렉터리를 주기적으로 스캔하여 DAG 목록을 최신화한다.

executor

  • 설치 당시의 옵션에 따라, executor의 동작 방식에 차이가 있다.
    • default: scheduler에 있는 모든 것들을 다 실행시킨다.
    • production: worker에게 task를 push한다.
  • task를 실행할 환경을 정의한다.
    종류에 따라 local이나 별도의 노드 또는 컨테이너 환경에서 실행시킨다.

worker

  • 실제로 task를 실행하는 주체이다.

DAG

Directed Acyclic Graph

  • DAG는 파이썬 파일(.py) 하나로 작성할 수 있는 workflow이다.
  • 유향 비순환 그래프로써, 루프가 발생하지 않도록 한다.
    • 이러한 특성이 workflow에 적용된다.
    • 어떤 순서로 task(노드)를 실행시킬 지,
      dependency(링크)는 어떻게 할 지 등을 설정한다.

database

  • Airflow에 있는 DAG, task 등의 metadata를 저장하고 관리한다.
  • 기본적으로는 SQLite을 사용하지만,
    실질적인 사용 시에는 분산 처리 등을 위해 MySQL과 같은 DBMS에 연결하여 사용한다.

features


  • Airflow Operator
    • task를 정의할 때 사용한다.
      즉, Operator객체 각각이 task이다.
    • PythonOperator, BashOperator 등 다양한 Operator가 존재하며,
      각 Operator마다 수행하는 주체나 목적이 다르다.
  • task relationship
    • DAG는 task에 >>, <<, []을 이용하여 전후 및 병렬 관계를 표현할 수 있다.
      (혹은, task_name.set_~stream(task_name)과 같은 형태로도 가능하다.)
  • cron expression
    • DAG의 schedule_interval에 사용되는 형식이다.
      • None으로 두고, schedule이 아닌 외부 trigger에 의해 실행되도록 할 수도 있다.
    • 순서대로 ‘분 시 일 월 요일’ 이다.

0개의 댓글