[Airflow] Architecture Overview

JeongChaeJin·2022년 8월 15일
0
  • airflow는 workflows를 Run하고, Build 하도록 해주는 Platform 이다.
  • Worflow는 DAG(a Directed Acyclic Graph)로 표현된다.
    • Worflow는 Tasks라고 불리는 일련의 data flow가 포함되어있다.

  • DAG는 Tasks 간의 의존성을 특정할 수 있으며 실행하고 회수하는 작업을 할 수 있다.
  • Airflow는 일반적으로 아래와 같은 컴포넌트들로 구성되어있다.
    • Scheduler : 스케줄링된 workflow들을 triggering 하고, 수행할 Task들을 제출하는 것을 다룬다.
    • Executor : task를 실행하는 것을 다룬다. 대부분은 스케줄러에서 run 하지만, production에 적합한 executor들은 workers로 task를 실행한다.
    • Web Server : user interface다. 이를 통해 DAGs, tasks를 trigger, inspect, debug 할 수 있다.
    • DAG 들에 대한 folder : workrers, executor, schduler에 의해 읽어지는 파일들이다.
    • Metadata Database : state store를 위해 사용된다.

  • 대부분의 executor들은 task queue와 같은 역할을 하는 worker들에게 컴포넌트들 실행을 맡겨준다. 사용자는 이런거 신경쓸 필요없이 singloe logical 컴포넌트로 수행하는 것처럼 수행하면 된다.

Workloads

  • DAG는 Tasks 의 시리즈로 실행된다. 여기에는 세가지 task type이 있다.
    • Operators : 미리 정의한 tasks
    • Sensors : Operator들의 특별한 subclass, 대부분 외부 event를 기다린다.
    • TaskFlow-Decordated : @task, Custom Python Function을 Task로 packaged 해준다.
  • 위 Tasks type은 BaseOperator의 subclass들이다.

Control Flow

first_task >> [second_task, third_task]
fourth_task << third_task
  • , << operator들을 사용해서 task간 종속성을 나타낼 수 있다.

first_task.set_downstream([second_task, third_task])
fourth_task.set_upstream(third_task)
  • 위의 함수들을 통해서도 가능하다.
  • 이러한 종속성은 Graph에서 edge로 만들어진다.
  • Data를 pass 할때에는 두가지 정도의 옵션이 있다.
    • XComs("Cross-communications"), task를 metadata에서 작은 bit로 push하고 pull하는 시스템.
    • 큰 파일들을 Uploading 하거나 Downloading
  • Airflow는 Task를 worker로 보내서 실행 시키므로 같은 mahcine or worker에서 DAG가 수행된다는 보장은 없다.

User Interface

  • logs를 보고, debugging 등을 할 수 있는 Webserver 형태의 interface가 있다.
profile
OnePunchLotto

0개의 댓글