IT 삽질기

Airflow Local Executor와 Celery Executor 본문

BigData/Airflow

Airflow Local Executor와 Celery Executor

화이팅빌런 2021. 8. 20. 23:51

이번 글에서는 Airflow의 LocalExecutor과 CeleryExecutor에 대해서 알아보도록 하자.

Airflow에서 제공하는 Executor의 종류는 여러가지가 있지만 여기서는 이 두가지만 자세하게 비교하도록 한다.

Executor

먼저 Executor이 뭔지 알아보도록 하자.

Airflow에서 이야기하는 Executor은 task가 실행되는 매커니즘으로 Executor을 어떻게 설정하느냐에 따라 task 실행방식이 달라지는 것으로 이해하면 될 것 같다.

Airflow에서 제공하는 전체 Executor은 아래의 링크에서 확인할 수 있다.

https://airflow.apache.org/docs/apache-airflow/stable/executor/index.html

Sequential Executor

Sequential Executor은 Airflow에서 제공하는 기본 Executor로 sqlite와 함께 사용할 수 있는 Executor로 한번에 하나의 task만 실행할 수 있어 병렬성을 제공하지 않아 실제 운영환경에는 적합하지 않음

Local Executor

Local Executor은 Sequential Executor과 달리 task를 병렬로 실행하는 것이 가능하며, 옵션값을 통해 최대 몇 개의 task를 병렬로 실행할지 설정하는 것이 가능하다. self.parallelism 옵션 값을 이용해 설정하며 이 설정값을 0으로 설정하는 경우 Local Executor는 task를 제한없이 무제한으로 실행하게 되며 이를 Unlimited parallelism 이라고 한다.

반대로 self.parallelism을 지정하는 경우에는 Limited parallelism 형식으로 동작하며 두 방식의 차이점에 대해서는 추가 글을 통해 자세하게 정리하도록 한다.

Celery Executor

다음으로 Celery Executor에 대해서 알아보자.

Celery Executor 역시 Local Executor과 마찬가지로 task를 병렬로 실행할 수 있다. Celery는 추가적으로 Redis나 RabbitMQ같은 MQ를 추가적으로 필요로 하는데 이는 Celery Executor가 클러스터 형식으로 구성되고 MQ에 있는 task를 실행하는 구조로 동작하기 때문이다. 따라서 Celery Executor 클러스터 형식으로 구성할 수 있어 Executor에 대한 HA 구성과 Scale out이 자연스럽게 가능하며 LocalExecutor보다 실제 운영환경에 적합하다고 판단된다. 다만 DAG 파일 역시 Celery Executor로 사용하고 있는 모든 Worker에 배포되어야 하기 때문에 git을 이용해 DAG를 관리하고 배포하는 시스템을 구축해야 한다.

Celery Executor의 Architecture는 아래와 같으며 보다 자세한 내용은 참고자료의 executor/celery.html 문서를 참고하기 바란다.

Local Executor vs Celery Executor

마지막으로 Local Executor과 Celery Executor에 대해 비교해보도록 하자.

  Local Executor Celery Executor
HA X O
Worker 수 1개 n개
task 동시 실행 여부 O O

이상으로 Local Executor과 Celery Executor에 대한 글을 마치며 해당 내용은 공부중 작성한 내용으로 실제 내용과 다를 수 있습니다. 글 내용에 대한 잘못된 점과 문의사항은 댓글이나 메일을 통해 이야기해주시면 감사하겠습니다.

 

참고자료

https://airflow.apache.org/docs/apache-airflow/stable/executor/local.html

https://airflow.apache.org/docs/apache-airflow/stable/executor/celery.html

https://engineering.linecorp.com/ko/blog/data-engineering-with-airflow-k8s-1/

https://engineering.linecorp.com/ko/blog/data-engineering-with-airflow-k8s-2/

'BigData > Airflow' 카테고리의 다른 글

Airflow SlackOperator 사용하기  (0) 2021.09.16
Airflow 서비스 등록하기  (0) 2021.09.04
Airflow Sensor 사용법  (0) 2021.06.21
Airflow KakaoWork bot 사용하기  (0) 2021.06.19
Airflow TeamsWebHook 사용하기  (0) 2021.06.03
Comments