without haste but without rest
Airflow architecture & Celery executor 본문
Official Docs - Airflow architecture overview
Medium Article
Goal
Airflow의 아키텍처를 파악한다.
Celery Executor가 무엇인지 파악한다.
Overview
스케쥴러는 워크플로우를 익스큐터에 전달한다.
익스큐터는 적합한 워커에 작업을 분배한다.
이때 작업은 곧 바로 워커에 전달하는 것이 아니라 메시지 큐에 전달 한다.
스케쥴러와 익스큐터는 DAG Directory에 접근해서 실행할 DAG 파일을 읽는다.
웹서버, 스케쥴러, 익스큐터는 상태를 저장하는 용도로 Metadata DB를 사용한다.
Celery Executor
celery executor(셀러리 익스큐터)는 마스터 노드에 스케쥴러와 웹서버를 띄우고 워커는 별도의 노드에서 구동시킨다.
(single node의 경우 마스터 노드에 워커까지 포함되는 구조다.)
그렇다면 celery executor는 기본 executor와 무엇이 다를까?
이미지에 존재하는 sleep15, sleep20 태스크가 Hello_World 태스크에 의존성을 가지고 있다. Hello_World가 성공하면 sleep15, sleep20 태스크가 실행되고, 두 태스크가 성공해야 sleep25 태스크가 실행된다. 그런데 싱글 노드로 구성된 에어플로우 아키텍처에서는 두 태스크를 동시에 실행할 수 없다. (Worker의 개수가 하나다.)
Celery executor를 사용하는 경우 Worker의 개수가 충분하다면 위 이미지처럼 sleep15, sleep20 태스크를 동시에 실행할 수 있다. 만약 Hello_World 태스크에 의존성을 가지는 태스크가 sleep15, 20.. 이외에 몇 백개가 존재한다면 단일 노드로는 DAG를 실행하는데 굉장히 많은 시간이 소요될 것이다.
'Scrap' 카테고리의 다른 글
AWS VPC (0) | 2022.04.14 |
---|---|
CI / CD with Github (0) | 2022.03.31 |
iterm 단어 단위로 이동 단축키 설정 (0) | 2021.12.30 |
Spark 자료구조 (0) | 2021.12.27 |
Kudu를 이용한 빅데이터 다차원 분석 시스템 개발 - NAVER D2 (0) | 2021.12.13 |