DE
Airflow - 1
알 수 없는 사용자
2023. 8. 3. 10:27
728x90
Airflow는 미리 설정한 Job을 특정 조건에 맞춰 동작시키는 워크플로우 스케쥴러다.
데이터 로드, 파싱, 리포트 생성 등 ETL 파이프라인에 사용되는 스크립트는 시간별로 (배치 처리) 동작해야 하는 경우가 흔하기 때문에, DE 플랫폼에서 스케쥴러로 많이 사용한다.
crontab, Argo Workflow, Azkaban 등 다른 워크플로우 스케쥴러도 많지만, 다양한 플러그인, 빌트인 보안/인증 기능, 보기 좋은 UI 등 많은 이유로 Airflow가 DE 필드에서 가장 많이 사용되는 스케쥴러라는 데는 이견이 적을 것이라고 생각한다.
Airflow가 제공하는 컴포넌트는 크게 아래 3가지로 구성된다.
- 웹서버 - 현재 활성화된 DAG, DAG내 Task의 진행 상황 등 Airflow UI를 제공한다.
- 스케쥴러 - 사용자가 생성한 DAG를 파싱하고, 조건을 만족한 DAG의 Task를 스케쥴링한다.
- 메타데이터 DB - Airflow에 사용되는 메타데이터를 저장할 뿐 아니라, 웹서버와 스케쥴러(들)이 정보를 주고받는 통로가 된다.
웹서버와 스케쥴러를 한 컴퓨팅 리소스에 (로컬 / 온프레미스 서버 / K8S 팟 등) 모두 실행시켜서 사용하기도 하지만, 일반적인 Best Practice는 웹서버와 스케쥴러를 분리한다.
리소스 절약 / 할당이 쉬워질 뿐만 아니라 Scheduler의 부하가 너무 클 경우 N개의 스케쥴러를 배포해서 부하를 분산하는 방법 역시 가능하기 때문이다. (참조: https://airflow.apache.org/docs/apache-airflow/stable/administration-and-deployment/scheduler.html#running-more-than-one-scheduler)
728x90