(출처 - https://airflow.apache.org/)
(출처 - https://airflow.apache.org/docs/apache-airflow/stable/concepts.html)
📌 Airflow의 작동흐름
Airflow DAG를 읽는다 -> Scheduler가 Task를 스케쥴링한다 -> Worker가 Task를 실행한다 -> Task의 실행상태가 DB에 저장된다 -> 사용자가 UI로 Task의 실행상태, 성공여부를 확인할 수 있다
DAG는 Task들 간의 관계와 dependency를 표현하고 있는 모음
Task간의 실행순서와 dependency, scheduler의 종류에 대한 정보를 가지고 있음
DAG를 정확하게 설정함으로써 Task를 적절하게 스케쥴링할 수 있음
(출처 - https://airflow.apache.org/docs/apache-airflow/stable/core-concepts/overview.html)
색별로 상태가 나와있어 모니터링하기 좋음. 원한다면 재실행하는 것도 용이함
1. SequentialExecutor
장점: 설정이 간단하며, 작은 워크플로우나 테스트에 적합합니다.
단점: 한 번에 하나의 태스크만 실행할 수 있어, 대규모 또는 병렬 처리에는 부적합합니다.
2. LocalExecutor
장점: 병렬 실행이 가능하며, 중간 규모의 워크플로우에 적합합니다. 설정이 비교적 간단합니다.
단점: 실행되는 모든 태스크가 동일한 머신에서 처리되므로, 리소스가 제한적일 수 있습니다.
3. CeleryExecutor
장점: 대규모 분산 환경에서 효과적이며, 여러 서버에 태스크를 분산시켜 병렬 처리가 가능합니다.
단점: RabbitMQ나 Redis와 같은 메시지 브로커가 필요하며, 설정과 관리가 복잡할 수 있습니다.
4. KubernetesExecutor
장점: Kubernetes 클러스터에서 동적으로 태스크를 실행할 수 있으며, 각 태스크마다 별도의 컨테이너를 사용합니다. 확장성과 격리성이 뛰어납니다.
단점: Kubernetes 환경 설정이 필요하며, Kubernetes에 대한 이해가 요구됩니다.
5. DaskExecutor
장점: 대규모 데이터 처리와 복잡한 병렬 처리에 적합합니다. Dask는 데이터 과학 작업에 최적화된 라이브러리입니다.
단점: Dask 클러스터 설정이 필요하며, Dask에 대한 추가적인 이해가 필요할 수 있습니다.
오늘의집 : 버킷플레이스 Airflow 도입기
[데이터 엔지니어링 with Airflow] 1강. Airflow 소개 및 비교 : 슬기로운 통계생활
Airflow