Airflow - Basics

Yeo Myung Ro·2022년 1월 9일
0

Apache-Airflow

목록 보기
1/2

Udemy - Apache Airflow: The Hands-On Guide 강의를 요약한 내용입니다.

Airflow란?

  • Apache Airflow 는 Python으로 Workflow를 작성하고, 스케줄링 및 모니터링을 할 수 있는 오픈 소스 플랫폼

Core Components

  • Web server : Airflow의 Web UI 서버
  • Scheduler : 모든 DAG와 Task를 관리하고 모니터링
  • Metastore : Airflow의 Metadata 저장소
  • Executor : task Instance를 실행하는 주체로, task가 어떻게 실행되어야하는지를 정의
  • Worker : task를 실행하는 process/subprocess

DAG

  • DAG(Directed Acyclic Graph)는 Airflow의 핵심 개념
  • 어떤 순서와 어떤 Dependency로 실행할지, 어떤 스케줄로 실행할지 등의 정보를 소유

Operator

  • 미리 정의된 Task의 템플릿
  • 다양한 종류의 Operator가 존재
    • Action Operators : 무언가를 실행하기 위한 operators
      • eg. execute python function, execute bash command, etc...
    • Transfer Operators : 데이터를 전달하기 위한 operators
      • eg. transfer data from presto to mysql
    • Sensor Operators : 상태를 확인하기 위한 operators
      • eg. file sensor : wait for a file to land at a specific location
      • eg. sql sensor : wait for a specific record in database

Airflow 동작 원리


이미지 출처

  • Web server ➡️ MetaDB
    - UI에 Dag와 Task 또는 user 정보를 표시하기 위해 MetaDB에서 데이터를 가져옴
  • Scheduler ➡️ MetaDB & Executor
    - Dags와 Task들을 실행시키기 위해 MetaDB & Executor에 접근
  • Executor ➡️ MetaDB
    - 종료된 Task들을 업데이트하기 위해 MetaDB에 접근
  • SchedulerWeb server, ExecutorMetaDB를 통해 서로 접근이 가능
  • Queue (redisrabbitMQ): executor의 외부에 존재하고, 여러 Worker에 Task들을 분배하기 위해 사용
  • Worker : Task가 실제로 실행되는 Node
  • Executor : Task들을 외부의 Queue로 전달
  • Task들이 Queue로 전달된 후, WorkerQueue에 있는 Task들을 가져감


1. Dag 폴더에 Dag 추가
2. Web serverScheduler가 추가된 Dag 정보를 Parsing
3. Scheduler는 추가된 dag가 실행되어야하는지 확인
4. 실행되어야 한다면 DagRun object 생성


5. DagRun object는 running 상태로 MetaDB에 저장
6. Dag 내에 실행 준비가 된 task가 있다면, scheduled 상태로 TaskInstance object 생성


7. Schduler가 TaskInstance를 queued 상태로 Executor에 전달


8. Executor가 task를 실행할 준비가 되면, TaskInstance 상태를 running으로 변경
9. ExecutorMetaDB에 TaskInstance 상태를 running으로 업데이트


10. Task가 종료되면, ExecutorMetaDB에 TaskInstance 상태를 채completed으로 업데이트


11. Scheduler는 실행할 Task가 더 있는지 확인 후, DagRun object를 completed로 업데이트


12. Web server가 UI에 Dag 상태 업데이트

profile
# data engineering

0개의 댓글