Executor는 Task 인스턴스들을 실행하는 메커니즘입니다.
공통 API를 가지고 있으며 요구되는 사항에 맞게 Executor를 변경하여 설치할 수 있습니다.
다만 Airflow는 한 번에 하나의 Executor를 구성할 수 있으며, airflow.cfg에서 옵션을 변경할 수 있습니다.
Executor
Executor는 크게 두 가지로 분류할 수 있다.
- Local Executors
- 스케줄로 프로세스 내부에서 작업을 실행한다.
- dag.test()
- Debugging Airflow DAGs on the command line
- SequentialExecutor :
- Airflow 초기 설치 시 default값
- 다중 연결을 지원하지 않기 때문에 sqllite만 유일하게 지원한다.
- 한 번에 하나의 작업 인스턴스만 실행한다.
- LocalExecutor
- 병렬처리 파라미터를 가지고 있어 병렬처리를 하는 데 사용한다.
- self.paralleism 이 0인 경우, execute_async가 호출될 때마다 프로세스를 생성하여 처리한다.
- self.paralleism > 0인 경우, task_queue를 사용해 해당 값만큼의 프로세스를 생성하여 처리한다.
- 상용 DB를 지원한다.
- 스케줄로 프로세스 내부에서 작업을 실행한다.
- Remote Executors
- 다중 머신/ 클라우드의 경우 원격 Executor를 사용한다.
- CeleryExecutor
- worker의 수를 동적으로 확장/축소할 수 있다.
- RabbitMQ, Redis... 등등의 메시지 브로커와 상태 저장용 백엔드 구성을 해야 한다.
- Airflow 구성 설정은 클러스터 전체에서 동일해야 하며 Operator 또한 마찬가지이다.
- KubernetesExecutor
- 쿠버네티스 클러스터 자체 Pod에서 각 작업의 인스턴스를 실행한다.
- 쿠버네티스 클러스터에 대한 액세스 권한 필요
- 백엔드에 sqllite가 아닌 데이터베이스가 필요
- CeleryKubernetesExecutor
- Celery와 Kubernetes를 동시에 사용하는 Executor
- CeleryExecutor의 리소스 동적 할당과 KubernetesExecutor의 작업 실패의 처리 같은 기능을 사용할 수 있다.
- DaskExecutor
- LocalKubernetesExecutor
- CeleryExecutor
- 다중 머신/ 클라우드의 경우 원격 Executor를 사용한다.
'데이터 엔지니어링 > AirFlow' 카테고리의 다른 글
[Airflow] 기반의 데이터 파이프라인(8) - 워크플로우 트리거 (0) | 2023.10.21 |
---|---|
[Airflow] 기반의 데이터 파이프라인(7) - 태스크 간 데이터 공유 (0) | 2023.10.20 |
[Airflow] 기반의 데이터 파이프라인(6) - 태스크 간 의존성 및 브랜치 (1) | 2023.10.19 |
[Airflow] 기반의 데이터 파이프라인(5) - 백필(BackFilling) (1) | 2023.10.14 |
[Airflow] 기반의 데이터 파이프라인(4) - Airflow의 실행 날짜 이해 (0) | 2023.10.13 |
[Airflow] 기반의 데이터 파이프라인(3) - 스케줄링 (1) | 2023.10.12 |