The basics of Airflow

우상욱·2024년 2월 25일
0

Airflow

목록 보기
1/22

Concept

Apache Airflow is an open source platform to programmatically author, schedule and monitor workflows

Airflow의 장점

  • Dynamic
  • Scalable
  • Extensibility

Core Components

  • Web Server
    Flask와 Gunicorn으로 구성됩니다. 없어도 Task 실행이 가능하지만 UI를 사용할 수는 없습니다.

  • Schedular
    스케줄링 워크플로우를 책임지는 데몬입니다. Airflow의 핵심, 스케줄러가 다운되면 더 이상의 작업을 진행할 수 없습니다. 그래서 일반적으로 Production 환경에는 최소한 2개의 스케줄러가 있습니다.

  • MetaStore
    메타데이터가 저장되는 데이터베이스입니다. 일반적으로 SQL Alchemy와 호환됩니다. Postgres, MySQL, Oracle DB 등이 있습니다.

  • Triggerer
    Deferrable Operators를 관리합니다. 다시 말해, 스스로를 일시 중단하거나, 다시 시작하는 작업을 관리합니다. 특히 다음 이벤트를 기다릴 때 유용합니다.

  • Executor
    어떻게 Task들이 수행되어야하는지 정의하는 클래스입니다. 스케줄러와 함께 내부적으로 정의되어있습니다. Executor는 Task를 수행하지 않습니다. Task의 수행은 Worker가 합니다. 어떤 시스템에서 어떻게 작업을 실행할 지 정의합니다. 예시로는 K8S Executor, Celery Executor, Local Executor가 있습니다.

  • Worker
    Worker는 작업이 실행되는 프로세스나 컴퓨터입니다.

Dag(Directed Acyclic Graph)


Dag는 방향성이 있지만, 순환하지 않는 그래프입니다.


이렇게 방향성이 없는 그래프는, Dag가 아닙니다.

Airflow에서 모든 데이터파이프라인은 Dag와 동일하다고 볼 수 있습니다.

Operator

Airflow에서의 Task는 Operator라고 보면 됩니다. Airflow에서 Task를 생성할 때는 Operator를 사용합니다. 즉 특정 날짜를 가진 Operator는 Task instance와 같습니다.

  • Action Operators
    Bash Operator, Python Operator를 통해서 스크립트나, 파이썬 코드를 실행할 수 있고, 데이터베이스에 Connection 할 수도 있습니다.

  • Transfer Operators
    만약 소스 a에서 소스 b로 데이터를 전송하고 싶다면, Transfer Operator를 사용하면 됩니다.

  • Sensor Operators
    데이터베이스에 입력되길 기다리는 작업이나, 파일이 특정 위치에 도착하길 기다리는 Operator가 필요하다면, 이 Sensor Operator를 활용합니다.

  • Deferrable Operators
    Sensor Operators의 스마트한 버전입니다. 추후에 따로 포스팅하겠습니다.

Workflow

앞서 말한 Operator를 순서를 만들어서 Dag를 만들면 ,이것이 Workflow고, Workflow는 즉 데이터 파이프라인입니다.

Airflow에 대한 오해

Airflow는 데이터를 처리하는 프레임워크가 아닙니다. 데이터를 전송할 수 있지만, 사이즈가 제한되어있습니다. 또한 실시간 데이터를 처리하는 프레임워크도 아닙니다. 지연시간이 상당하고, 그저 Ochestration tool입니다.

profile
데이터엔지니어

0개의 댓글