Apache Airflow Catchup

주재성·2023년 4월 2일
0

Catchup

https://airflow.apache.org/docs/apache-airflow/stable/core-concepts/dag-run.html#catchup

Apache Airflow에서 catchup 옵션은 DAG(Directed Acyclic Graph)가 실행되지 않는 기간 동안 발생한 task instance를 backfill 또는 누락되거나 건너뛴 task instance를 catchup 할지 여부를 결정합니다.

catchup = False

  • 현재 날짜 이후부터 task를 스케쥴링

catchup = True

  • scheduler가 마지막 data interval 이후로 실행되지 않거나 지워진 모든 interval를 탐색하여 재실행합니다.

trouble shooting

제가 backfill 외에 catchup을 사용하려고 했던 dag는 위와 같이 catchup tasks가 scheduled tasks 사이에 존재하는 경우였습니다.

  • 예상한 시나리오
    • (missed or skiped) tasks를 탐색하여 catchup 해줄 것을 기대.
  • 실제
    • 마지막으로 실행된 data interval이 catchup할 task보다 뒤에 존재하므로 current_date 이후 task에 대해서만 스케쥴링 함.
  • 해결
    • (missed or skiped) task 중, 최초 data interval에 대해 manual하게 실행하여 마지막 data interval을 원하는 위치로 조정.

best practices

catchup 옵션을 true로 설정하기 전에 주의해야하는 포인트 몇가지를 간략하게 정리합니다.

  1. start_dateschedule_interval을 올바르게 설정했는지 확인해야 합니다.
  • date range가 크거나 data interval이 작은 경우에는 catchup 프로세스에 시간이 오래 걸리고 Airflow 시스템 속도가 느려질 수 있습니다.
  1. Task dependencies를 확인해야 합니다.
  • 다른 task에 dependancy가 있는지 airflow는 체크해주지 않으므로, 현재의 dag와 dependancy가 있는 task를 확인해야 합니다.
  1. idempotent(멱등성)을 보장하는 task인지 확인해야 합니다.
  • 언제 실행하더라도 같은 결과를 가져오는 task가 아니라면, catchup tasks에서 side effects를 발생할 수 있습니다.

0개의 댓글