데이터 엔지니어링/AirFlow

[Airflow] 기반의 데이터 파이프라인(9) - Executor

안용감한호랑이 2023. 10. 26. 00:41

Executor는 Task 인스턴스들을 실행하는 메커니즘입니다.

공통 API를 가지고 있으며 요구되는 사항에 맞게 Executor를 변경하여 설치할 수 있습니다.

다만 Airflow는 한 번에 하나의 Executor를 구성할 수 있으며, airflow.cfg에서 옵션을 변경할 수 있습니다.

 

Executor

Executor는 크게 두 가지로 분류할 수 있다.

  1. 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를 지원한다.
  2. Remote Executors
    • 다중 머신/ 클라우드의 경우 원격 Executor를 사용한다.
      • CeleryExecutor
        • worker의 수를 동적으로 확장/축소할 수 있다.
        • RabbitMQ, Redis... 등등의 메시지 브로커와 상태 저장용 백엔드 구성을 해야 한다.
        • Airflow 구성 설정은 클러스터 전체에서 동일해야 하며 Operator 또한 마찬가지이다.
      • KubernetesExecutor
        • 쿠버네티스 클러스터 자체 Pod에서 각 작업의 인스턴스를 실행한다.
        • 쿠버네티스 클러스터에 대한 액세스 권한 필요
        • 백엔드에 sqllite가 아닌 데이터베이스가 필요
        • Airflow KubernetesExecutor에 있는 이미지
      • CeleryKubernetesExecutor
        • Celery와 Kubernetes를 동시에 사용하는 Executor
        • CeleryExecutor의 리소스 동적 할당과 KubernetesExecutor의 작업 실패의 처리 같은 기능을 사용할 수 있다.
      • DaskExecutor
      • LocalKubernetesExecutor