-
Airflow - DAG, Task, Operator, SchedulingAirflow 2023. 12. 20. 00:43
DAG (Directed Acyclic Graph)
구글에는 폐로가 없는 유향 그래프라고 뜻한다.
사진처럼 단방향으로 이루어진 흐름만이 존재한다.
동그라미 안에있는 것들을 Airflow에서는 Task라고 정의한다.
Airflow에서는 이런 동그라미 요소들, Task들의 요소를 조합하여 데이터를 가공하거나 처리한다.
정의한 task는 다중으로 실행도 가능하고, 이를 병렬로도 실행이 가능하다.
출처: 헤이즐캐스트 https://hazelcast.com/glossary/directed-acyclic-graph/ 
출처: 헤이즐캐스트 https://hazelcast.com/glossary/directed-acyclic-graph/ Task
DAG 하나에 최소 하나를 구성하는 단위이다.
Task는 첫 그림처럼 여러가지로 두어, 1번 → 2번 혹은 3번 → 4번 혹은 5번 혹은 종료와 같은 조건식으로 분기하여 실행도 가능하다.
DAG내에 Task들을 조합하며 사용할 때에는 이렇게 사용한다.task1 >> task2 >> task3 >> task4task간의 흐름이 존재하고 위 코드처럼 작성시, 일반적으로 task간의 의존성이 존재한다.
Operator
Task 내부에 존재하며, Task 실행시 가장 큰 부분을 차지한다.
Airflow 코드들을 보면 XXXOperator(**kargs)같은 것들이 존재할 것이다.
대표적인 예로 PythonOperator는 Python을 실행 할 목적으로 Task가 존재할 때 사용해야하는 Operator이고, BashOperator는 Bash shell을 실행하기 위한 목적으로 사용된다.
이밖에도 BaseBranchOperator, DockerOperator 같은 종류들이 존재한다.
실질적으로 Airflow 엔진이 실행하는 주체는 DAG와 Operator이고(이미 존재하는 프레임워크 내에서 정의 되었기 때문.), 사용자가 정의하여 직접 조정하는 부분은 Task이다.Scheduling
DAG를 주기적인 크론으로 실행하려면 DAG를 생성할 때 schedule_interval 값을 설정하면 된다.
크론잡 형식으로 등록도 가능하고, 크론 프리셋(”@daily”)을 사용해서도 등록 가능하다.
크론 프리셋을 추가적으로 확인하려면 아래 링크를 타고 들어가면 바로 보일 것이다.
https://airflow.apache.org/docs/apache-airflow/1.10.10/scheduler.html#dag-runs'Airflow' 카테고리의 다른 글
Airflow - Testing (0) 2024.03.25 Airflow - Sensor (0) 2024.02.18 Airflow - Branch (0) 2024.01.21 Airflow - Task 의존성 (0) 2024.01.21 Airflow - 에어플로우가 구동되려면. (0) 2023.12.19