Airflow
데이터 엔지니어링을 효율적으로 수행할 수 있도록 도와주는 오픈소스 플랫폼
프로그래밍 방식으로 워크플로우를 작성, 예약 및 모니터링
작업을 정확한 시간에, 정확한 방법으로 정확한 순서대로 실행하게 해준다.
[ ex. 매일 밤 12시에 트리거 해야 하는 데이터 파이프라인이 존재 워크로드 중에 하나라도 문제가 생긴다면?? 관리해야 하는 파이프라인이 수백 개가 있다면?? => Airflow로 관리 가능! ]
1. Airflow 동작방법
User interface / Web Server
: airflow는 설치 만으로 web server를 구성 할 수 있음
DAG Directory
: 작업 스케줄을 만들어주는 스케쥴링 단위를 작성한 DAG를 보관하는 장소 python 코드로 작성한 DAG들을 여기에 보관한다.
Worker
: 실제 Task를 실행하는 주체. Executor 종류에 따라 동작 방식이 다양하다.
Metadata Database
: 실행할 Task의 관한 정보를 저장해 놓는다. 순서나 작업 스케쥴링 등등 , task status(queued, scheduled, running, success, failed, etc)가 저장된다.
Scheduler
: DAG와 작업들을 모니터링하고 실행 순서와 상태 관리한다.
Executor
: 스케줄러와 함께 동작하는 구성요소. status가 queued인 태스크를 확인하며 실제 어떤 리소스가 투입되어 실행 될 것인지를 결정, Local Executor, Celery Executor, Kubernetes Executor 등이 있다
1. Dag를 작성하여 Workflow를 만든다 Dag는 Task로 구성되어 있다.
2. DAG를 실행 시킬 때 Scheduler는 DagRun 오브젝트를 만든다.
3. DagRun 오브젝트는 Task Instance를 만든다.
4. Worker가 Task를 수행 후 DagRun의 상태를 “완료”로 바꿔놓는다.
구동 순서
webserver 구동 -> folder DAGs 파일 받아와 보여줌
-> Scheduler에서 Folder DAGs를 보고 Metastore에 정보전달 DAGRun 생성
-> DagRun에 해당하는 Task Instance 생성 및 Executor에 전달
-> Task가 여러개이면 Metastor와 Task들의 처리 상태(진행, 건너뛰기, 완료 등)을 업데이트하면서 다음 내용 이전내용을 Execute 진행
-> 완료 되면 DagRun에 완료 상태 보내고 Scheduler에 완료 상태 업데이트 알려주어 끝냄
출처 : https://magpienote.tistory.com/192
2. Dag
airflow에서 실행할 작업들을 순서에 맞게 구성한 워크플로우(WorkFlow)를 의미
Directed Acyclic Graph의 약자, dag를 구성하는 각 작업들을 태스크 (Task)라고 한다.
작업 내부에서 발생하는 일에 대해서 신경쓰지 않고 각 태스크가 적절한 시점에, 올바른 순서로 실행되거나 올바른 문제 처리를 통해 실행되도록 한다.
다음 기능을 수행할 수 있다
- 수집을 위한 데이터 준비
- API 모니터링
- 이메일 보내기
- 파이프라인 실행
💧workflow
작업의 흐름
💧operator
가장 작은 단위
dag가 작동하는 동안 workflow를 어떻게 작동할지 묘사하는 것
operator이 모여 task가 되고 task가 모여서 dag가 된다. dag가 모이면 workflow가 된다.
task < dag < workflow
💧Task 배열
정의한 Tack들의 실행 순서를 정의하는 과정이다.
set_downstream (정방향), set_upstream (반대 방향) 함수를 사용할 수 있다. 일반적으로 >>, << 연산자를 사용하고 Airflow 1.8버전부터 사용한다.
단순한 작업의 경우 task1 >> task2 >> task3
다음의 경우에는 task1 >> [task2, task3] >> task4 로 정의한다
출처
[1] https://airflow.apache.org/docs/apache-airflow/stable/core-concepts/dags.html#dags
[2] https://www.bearpooh.com/151
3. Airflow Lifecycle
💧Scheduler heartbeat
Airflow 스케줄러가 건강한 하트비트를 제공하는 시간(즉, 응답하는 시간)을 보여주는 타임라인
Airflow 스케줄러 문제를 식별하기 위해 빨간색 영역을 확인
댓글