728x90
반응형
Executor란?
- Task가 실행되는 메커니즘으로 Airflow 당 하나의 Executor만 가질 수 있습니다.
- Executor는 파이썬 패키지를 통해 설치가 가능하면 airflow.cfg 에서 옵션을 변경하여 변경 할 수 있습니다.
Executor 종류
https://airflow.apache.org/docs/apache-airflow/stable/executor/index.html
위의 페이지에서 전체 Executor 목록에 대해서 확인 가능하며, 주로 사용하는 Executor 들의 특성에 대해서 정리해보았습니다.
- SequentialExecutor
- Airflow 설치 시 가장 기본으로 제공되는 Executor로써 병렬 작업은 지원하지 않습니다.
- Airflow Executor 중 유일하게 Sqlite DB와 호환됩니다.
- LocalExecutor
- 하나의 Webserver에서 Airflow Webserver, Scheduler, Executor를 모두 실행하는 형태
- Task를 Process 형태로 Spawn 하여 실행하는 방식
- 병렬 작업 지원
- parallelism 설정 값에 따라 두 가지 구조로 나뉘어짐
- self.parallelism == 0 -> execute_async가 호출될 때마다 Process가 생성되며 result_queue에 작업 결과는 저장합니다. (LocalWorker)
- self.parallelism > 0 -> 실행 시에 self.parallelism 의 개수 만큼의 Process가 생성되며 task_queue를 통해 효율적으로 작업을 분배합니다. (QueuedLocalWorker)
- CeleryExecutor
- Worker 노드를 HA 구성하거나 Scale Out 하는 방법 중 가장 간단한 Executor 실행 방식입니다.
- Worker 노드에 작업 분배를 위해 Message Broker "Redis, RabbitMQ 등"이 필요합니다.
- KubeExecutor
- k8s를 사용하여 Worker 노드를 운영하므로 HA 구성가 손쉬운 Scale Out 방식을 제공합니다.
- k8s의 각 Pod에서 Task를 실행합니다.
- Airflow Scheduler는 k8s Cluster에서 실행될 필요는 없지만 k8s Cluster Access 권한을 필요로 합니다.
- Airflow backend_result는 SQlite가 아닌 다른 DB를 필요로 합니다.
CeleryExecutor 변경
CeleryExecutor를 단일 WokerNode 형태로 구성해보겠습니다.
## Redis Server 설치
> sudo apt-get install redis-server
> vim /etc/redis/redis.conf
## 아래와 같이 supervised 형태를 변경해줍니다.
## Redis 실행
> sudo systemctl start redis.service
> sudo systemctl enable redis.service
> sudo systemctl status redis.service
## CeleryExecutor 설치
> source /home/airflow/sandbox/bin/activate
> pip install apache-airflow'[celery]' --constraint https://gist.githubusercontent.com/marclamberti/742efaef5b2d94f44666b0aec020be7c/raw/21c88601337250b6fd93f1adceb55282fb07b7ed/constraint.txt
## DB 관련 중간 작업은 이전 게시물 확인 바랍니다.
## 아래 설정도 이전 게시물에서 완료된 설정입니다!
> vim /home/airflow/airflow/airflow.cfg
## Airflow Celery Flower, Celery Worker 실행
> airflow celery flower
> airflow celery worker
## 정상 실행 시 아래와 같이 flower가 Default 5555 포트에서 실행됩니다.
> netstat -tnlp
작업확인
'DAG를 실행하여 Worker Node 정상 동작 여부 확인'
Flower 정상 동작 확인
작업 실행 확인
728x90
반응형
'Airflow' 카테고리의 다른 글
Airflow - MySqlOperator (0) | 2022.07.29 |
---|---|
Airflow - SubDag & TaskGroup (0) | 2022.06.30 |
Airflow DB 변경 (0) | 2022.06.27 |
Airflow 시작하기 (0) | 2022.05.31 |
DAG 작성하기 - 1 (0) | 2022.05.31 |