[AirFlow] AirFlow 용어 정리

최지영·2022년 4월 25일
0
post-custom-banner

📖 AirFlow 용어 정리

airflow 동작

  1. AirFlow 기본 동작 순서

📌 소개

  • AiFlow는 일련의 작업 흐름을 DAG(Directed Acyclic Graph)로 관리

📌 airflow architecture

📖 metadata database

  • metadata database
    dag 정보, 실행이력, 스케줄링 이력, 유저 정보 등 실행하는 workflow에 필요한 메타데이터를 저장한다.

  • web server & scheduler
    에어플로우 웹서버와 스케줄러는 분리된 프로세스로, metadata database와 상호작용한다.

  • executor
    위 그림에서는 executor와 scheduler가 분리되어있지만, 사실 executor는 scheduler 안에서 동작한다. 작업을 worker가 수행하는 방식을 결정한다.

  • worker(s)
    다른 요소들과 상호작용하며, 실제 작업을 수행한다.

  • airflow.cfg
    configuration file로 timezone, database connection 등 실행에 필요한 다양한 정보를 저장한다. 웹서버, 스케줄러, 워커가 접근할 수 있어야 한다.

  • dags
    python code로 만들어진 data pipeline 정의 파일로, 이것 역시 웹서버, 스케줄러, 워커가 접근할 수 있어야 한다.

📌 airflow 개념 정리

📖 주요 용어

에어플로우가 좋다는 소문을 듣고 처음 에어플로우를 사용하려고 하면 별의 별 용어들 때문에 머리가 아파온다 😥

매번 볼때마다 위와같은 짤 표정이 나와서 이번 기회에 에어플로우에서 사용하는 용어들을 간략 하게 정리하려고 한다

가..가즈아! 😁


  • DAG
    소스코드에서 작성한 DAG 의 아이디
  • Logical Date
    Logical Date는 이 시점에 데이터를 작업하겠다고 주문이 들어간 작업이다 즉, 예를 들어 아래의 Dag 소스코드에서 30분 간격으로 Dag가 동작하도록 작성되어있으면 현재 시간이 오후 4시 30분이라고 가정했을때 Logical Date는 4시의 작업을 수행한다
  • Schedule
    배치 작업의 간격을 나타냄
  • Start Date
    Start Date가 작업이 실제로 수행되는 시간
  • End Date
    작업이 실제로 종료된 시간
  • Queued At
    Start Date와 동일

Dag 소스코드

  • start_date
    이 부분이 굉장히 헷갈리게 받아들여지는데 start_date는 작업이 시작하는 시간이 아니다.
    과거의 시간으로 적어줄 수 있으며 현재의 시간으로 적어줄 수 있다.
    예를 들어 지금이 2022년 4월 25일 오후 4시라고 가정했을때 StartDate에 2022년 4월 20일로 작성하는 경우 2022년 4월 20일부터 현재까지 3분 간격의 작업을 바로바로 수행한다.

위의 그림을 보면 해당 작업은 3분 간격으로 동작하게 되어있는 DAG파일인데 StartDate가 몇초 되지 않아 바로바로 동작하는것을 볼수 있다.
아래 그림에서 [] 로 감싸진 부분이 현재 수행된 시간인데 PythonDag에서 context['ts']로 시간을 받아보면 작업을 수행해야할 날짜를 돌려준다.
따라서 과거 데이터를 놓친게 있다 하더라도 그 시점의 일자를 StartDate에 작성해주고 원하는 배치 간격만 설정을 해준다면 놓친 데이터도 에어플로우에 의해서 현재시점까지 작업을 수행하게 된다.

  • schedule_interval
    Dag가 수행되는 간격
  • task_id
  • retries
  • retry_delay
post-custom-banner

0개의 댓글