일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- slack app
- 람다 아키텍처
- re
- hadoop
- java
- Scala
- yarn
- NoSQL
- Windows
- Example DAG
- Service
- Lambda architecture
- python
- jupyter
- 정규표현식
- execution_date
- MapReduce
- SlackWebhookOperator
- docker
- HDFS
- HDP
- HBase
- airflow
- HIVE
- Namenode
- LDAP
- 빅데이터
- slack
- ambari
- Kafka
- Today
- Total
IT 삽질기
Airflow execution_date 이해하기 본문
이번 글에서는 Airflow의 execution_date에 대해서 이해해보도록 하자.
execution_date에 대한 설명을 하기에 앞서 Airflow는 batch schedulering을 위한 tool이라는 것을 기억하자.
execution_date란 ?
먼저 execution_date에 대한 정의를 내려보자.
airflow에서의 execution_date는 dag가 실행되어야 하는 기대값이라고 생각할 수 있을 것 같다.
한 가지 예를 들어 살펴보자. 매일 자정 전날에 발생했던 log들을 HDFS로 이관하는 작업이 있다고 가정해보자. 자정이 지나 오늘의 날짜는 2021-09-26일인데 이관되어야 하는 log들의 날짜는 2021-09-25일이 된다. 이런 경우 사용자는 하루 전 날짜의 데이터를 가지고 오기 위해 어떻게 해야할까? 단순하게 오늘 날짜-1을 하여 데이터를 가지고 오면 되는데 airflow는 이를 execution_date라는 것으로 대신 사용할 수 있게 해준다. 실행되는 날짜는 2021-09-26이지만 execution_date는 2021-09-25가 된다.
실제 예를 살펴보도록 하자. 아래의 예는 daily job으로 start date와 execution date를 잘 살펴보면 오늘의 날짜는 분명 26일인데 execution_date는 25일까지밖에 없는 것을 확인할 수 있다. execution_date가 26일인 작업은 27일 자정에 실행되게 된다.
다른 예시도 함께 살펴보도록 하자. hourly job과 5분마다 실행되는 dag들의 실행 이력은 아래와 같다.
hourly job의 경우 현재 시간은 14시인데 execution_date는 13시까지 밖에 존재하지 않고 이 역시 위의 예와 동일한 예를 들어 설명하면 13시 log 데이터를 모두 이관하기 위해서는 14시에 작업이 실행되어야하는데 그 때의 execution_date는 13시가 되는 것이다.
마지막으로 주기가 5분인 작업은 어떻게 동작하게 될까? 이 작업의 경우 실무에서는 거의 사용할 일이 없겠지만 예제를 통해 살펴본다고 이해하면 될 것 같다. 위의 2개의 동작방식과 마찬가지로 start date와 execution_date사이에 동일한 방식으로 차이가 발생하는 것을 확인할 수 있다.
정리
이번 글에서는 execution_date에 대한 내용을 정리해보았다.
execution_date에 대해 처음 이해할 때 어려움을 겪었고, 왜 이렇게 동작하는지에 대한 고민도 많이 했지만 잘 이해하고 사용한다면 매우 편리하게 사용할 수 있는 기능 중 하나라는 생각이 든다.
본 글에서는 scheduler_interval에 대해 많은 내용을 다루지는 못했지만 아래의 참고자료에 있는 글에서는 특정 요일에만 실행되는 dag에 대한 경우 execution_date가 어떻게 변화하는지에 대한 내용까지 잘 설명하고 있으므로 보다 자세한 해당 글도 함께 참고하기 바란다.
내용에 잘못된 내용이 있을 수 있으며, 잘못된 내용이나 문의사항에 대해서는 댓글로 남겨주시면 답변 드리도록 하겠습니다.
example_dags
https://github.com/dydwnsekd/airflow_example/blob/main/dags/execution_date_daily.py
https://github.com/dydwnsekd/airflow_example/blob/main/dags/execution_date_hourly.py
https://github.com/dydwnsekd/airflow_example/blob/main/dags/execution_date_5min.py
참고자료
https://towardsdatascience.com/airflow-schedule-interval-101-bbdda31cc463
'BigData > Airflow' 카테고리의 다른 글
Airflow Xcom 사용하기 (0) | 2021.09.24 |
---|---|
Airflow Example DAG 제거하기 (0) | 2021.09.19 |
Airflow SlackOperator 사용하기 (0) | 2021.09.16 |
Airflow 서비스 등록하기 (0) | 2021.09.04 |
Airflow Local Executor와 Celery Executor (0) | 2021.08.20 |