JUST WRITE

What is Airflow? 본문

MLOps/Airflow

What is Airflow?

천재보단범재 2022. 3. 23. 22:13

Airflow

What is Airflow

Airflow is a platform to programmatically author, schedule and monitor workflow

위 문장이 Apache Airflow 공식 사이트에 게시되어 있는 Airflow 한 줄 소개글이다.

Airflow는 Workflow를 프로그래밍적으로 작성할 수 있고, Schedule 하고 모니터링을 하게 해주는 Platform이다.

다르게 해석하면 작업들을 일정한 시간에 정확한 방법으로 올바른 순서대로 실행하게 해주는 Tool이다.

장점

Dynamic

Airflow에서 Pipeline은 Python으로 정의할 수 있다.

Python으로 가능한 것이면 Airflow에서 Pipeline내 Task로 실행할 수 있다.

Scalable

Airflow는 Scalable하다.

Arictecture를 어떻게 구성하느냐, Resource가 얼마나 되는지에 따라 얼마든지 Task를 병렬로 실행할 수 있다.

Arflow는 Modular Architecture로 구성되며 Message Queue를 사용한다.

User Interface

Airflow는 편하고 보기에 좋은 Web Interface를 제공한다.

Web Appliation을 통해 쉽게 Pipeline를 모니터링, 관리할 수 있다.

어렵지 않아 쉽게 이용할 수 있다.

Extensible

Airflow는 Extensible 한다.

필요한 기능에 대해 plugin 형태로 쉽게 적용 가능하다.

커스텀 기능을 추가하기도 좋다.

구성

  • WebServer
  • Scheduler
    • Daemon Service로 Task의 Scheduling 담당
    • Task 모니터링, 관리
  • Metastore
    • Airflow에 관련된 모든 Data를 저장하는 Database
    • SqlAlchemy를 통해 Metastore와 Interact
    • Default는 SQLite이며, PostgreSQL, MySQL로 가능
  • Executor
    • Task 수행 방식 정의(the mechanism by which task instances get run)
    • 종류
      • Local -> Debug, Local, Sequential Executor
      • Remote -> Celery, CeleryKubernetes, Dask, Kubernetes Executor
  • Worker
    • 실제로 Task를 수행하는 주체

Concept

DAG

Directed Acyclic Graph

DAG는 방향을 가진 비순환 Graph이다.

위 그래프는 DAG이다.

순환하지 않고 일방향 성만 가진다.

Airflow Pipeline은 DAG 형태로 구성된다.

Operator

OperatorTask의 Template 역할을 한다.

DAG내에서 정의할 수 있다.

with DAG("my-dag") as dag:
    ping = SimpleHttpOperator(endpoint="http://example.com/update/")
    email = EmailOperator(to="admin@example.com", subject="Update complete")

    ping >> email

Operator는 아래와 같이 3가지 종류가 있다.

  • Action Operator
    • Function이나 Command 실행
    • BashOperator, PythonOperator ...
  • Transfer Operator
    • Data를 Source -> Target에 Transfer
  • Sensor
    • 특정 조건을 만족했을 때 실행

Operator의 종류는 많다.

기본적으로 설치가 되지 않는 Operator는 추가적인 설치가 필요하다.(참고링크)

Task / Task Instance

Data Pipeline이 trigger에 의해 실행되면 Pipeline 내 정의된 Task가 실행된다.

이렇게 실행된 Task가 Task Instance이다.

OOP관점에서 Task는 Class이며 Task Instance는 Object이다.

 

Airflow는 Data Streaming Solution도 Data Proessing Framewokr도 아니다.

그런 빅데이터 처리는 Spark에서 해야 한다.

Airflow는 Orchestrator이다.

728x90
반응형
Comments