코딜기

[Airflow] Airflow 기본 아키텍처 본문

Data Engineering/Airflow

[Airflow] Airflow 기본 아키텍처

코딜기 2024. 5. 7. 18:41
반응형

Airflow 기본 아키텍처

Scheduler

  • 스케줄 된 워크 플로우를 트리거하고, Executor에게 task 실행하도록 요청하는 역할을 합니다.
  • 기본적으로 1분에 한 번씩 모든 DAG들의 정보를 업데이트하고, 상태정보를 확인합니다.
  • Scheduler는 모든 task와 DAG를 모니터링하고 각각의 task들을 조건에 맞게 트리거합니다.

Executor

  • task의 실행을 관리합니다.
  • 실제 task의 실행은 Scheduler 내부에서 수행할 수도 있고, 외부의 worker에게 실행을 맡길 수도 있습니다.
  • Executor의 종류
    • Local Executor : 로컬에서 프로세스를 실행시켜 task를 실행하는 방식
    • Sequential Executor : Local Executor와 비슷하지만 로컬에서 한 번에 하나씩만 동작하는 방식
    • Celery Executor : Celery를 이용해서 작업을 worker에게 분배하고, 작업 결과를 관리하는 방식
    • Celery Kubernetes Executor : K8S 환경에서 Celery를 이용하는 아키텍처 방식
    • Dask Executor : Dask를 이용해서 task의 실행과 결과를 관리하는 방식
    • Kubernetes Executor : K8S 환경에서 task를 pod에 스케줄링하는 방식
    • Local Kubernetes Executor : task를 Local Executor 또는 Kubernetes Executor로 동작시키는 방식
  • 보통 k8s 환경에서는 Kubernetes Exceutor를 사용하고, 그렇지 않을 경우에는 Celery Executor를 많이 사용합니다

Websever

  • 유저가 DAG나 task의 상태를 관리하는 웹 인터페이스 도구입니다.
  • 여러 가지 공통 설정을 관리하거나 매뉴얼 한 작업의 수정, 디버깅까지 가능합니다.

DAG Directory

  • 워크 플로우가 정의된 DAG의 python 파일은 Scheduler와 Executor가 읽을 수 있는 dags 경로에 있어야 합니다.

Metadata Database

  • 작업의 정의, 상태, 실행 정보, 결과정보, 로그, audit 등을 관리하는 데이터베이스입니다.
  • Scheduler, Executor, Webserver 모두 metadata database에 접근이 가능합니다.
  • 사용 가능한 Database 종류와 버전
    • PostgreSQL: 11, 12, 13, 14, 15
    • MySQL: 5.7, 8
    • MsSQL: 2017, 2019
    • SQLite: 3.15.0+
반응형
Comments