Data/Airflow

Slipp) Airflow2.0 스터디_2주차(3장) Airflow의 스케줄링

MightyTedKim 2022. 4. 28. 22:01
728x90
반응형

링크 : https://www.slipp.net/wiki/pages/viewpage.action?pageId=3276808650825 

 

2주차 - (3장)airflow의 스케줄링 - SLS - SLiPP::위키

페이지 … Home 22차 SLiPP 스터디 Airflow 2.0 배너의 맨 끝으로 배너의 맨 처음으로 2주차 - (3장)airflow의 스케줄링 메타 데이터의 끝으로 건너뛰기 김학건님이 작성, 2022년 04월 26일에 최종 변경 메타

www.slipp.net

2번째 스터디가 시작했는데, 발표자 분이 피피티를 준비해오셨어요.
3장은 간단하지만 중요한 멱등성, 원자성의 개념이 있었고
각자 회사에서 이 원칙이 잘 지켜지는지 이야기하는 시간을 가졌습니다.

요약

1. 3장 발표 

2. 3장 내용 관련 썰 풀기

설명

1. 3장 발표 

  1. 일정한 실행
    1. scheduler_interval : @daily, 0 0 * * MON-FRI, dt.timedelta(days=3)
  2. 동적 DAG 구성
    1. 실행 날짜를 사용 → 이건 4장에서 더 자세히
      1. {{ds}}.json, {{next_ds}}
      2. 시점 기반(cron), 간격기반(airflow)
  3. 과거 데이터 재처리 
    1. backfill
      1. catchup=True
  4. 모범사례
    1. 원자성 → transaction 지켜져야함(적절한 분리 필요)
    2. 멱등성 → 또 실행해도 똑같아야됨

2. 3장 내용 관련 썰 풀기

  1. 일정한 실행
    1. - end_date 쓰는 회사 있나? → 다들 start_date만 쓰고 있음
    2. end_date 넣고 실행하는 작업이 아직은 저도 없는 것 같아요
  2. 동적 DAG 구성
    1. - 내장 변수들을 사용해서 파일명이나 폴덩명을 적요 →dt={{ds}}

      - cron(간격 기반), airflow(시점 기반) -> execution_date이 중요함

      cron과 비교해서 생각해보지 않았는데, airflow 이해에 더 도움이 되었어요

  3. 과거 데이터 재처리
    1. backfill은 어떻게 하는건가? → UI에는 따로 실행하지 않고 dag 삭제해서 진행함

      scheduler 다운되면 갑자기 과거 작업들이 실행됨 → 그럴 때는 catchup=False하면됨

      catchup=false 하면되는데, 왜 latestOperator가 있는지 의문이 드네요

  4. 모범사례
    1. 원자성 멱등성 잘 지켜지는지? → 잘 관리 안됨 ㅜㅜ (유지보수 힘듦)
      예를 들면, 'spark 잡'과 '파일 경로를 mv' task를 분리해야지 리소스 많이 사용되는 잡이 끝나고 뒤에 간단한 작업을 retries=3 을 주면서 작업 할 수 있음
      잘안지켜지고 있고, 운영 중에 바꾸기 쉽지 않다는 이야기를 하며 눈물을 흘렸네요

 

다음 스터디는 4,5장 같이 진행하기로 했어요

3번째 스터디인데 벌써 파트 1이 끝나가네요ㅎㅎ

 

+ k8s 환경에서 airflow가 어떻게 설치되고 운영되는지 이야기하는 시간도 가졌습니다

728x90
반응형