[Batch Process] Apache Airflow

HipJaengYiCat·2023년 7월 6일
0

Batch Process란?

예약된 시간에 실행되는 프로세스
일회성(1회)도 가능하고, 주기적인 실행도 가능
ex. 이번 주 일요일 07:00에 1번 실행되는 프로세스
ex. 매주 일요일 07:00에 실행되는 프로세스

  • 모델을 주기적으로 학습시키는 경우 사용(Continuous Training)
  • 주기적인 Batch Serving을 하는 경우 사용
  • 그 외 개발에서 필요한 배치성 작업

Batch Process 구축 방법

1) Linux Crontab

  • (서버에서) crontab -e 입력
  • 실행된 에디터에서 0 * * * * predict.py 입력
  • (0 * * * * 은 크론탭 표현으로 매 시 0분에 실행하는 것을 의미)
  • OS에 의해 매 시 0분에 predict.py가 실행
  • Linux는 일반적인 서버 환경이고, Crontab은 기본적으로 설치되어 있기 때문에 매우 간편
  • 간단하게 Batch Process를 시작하기에 Crontab은 좋은 선택

크론 표현식

  • Batch Process의 스케줄링을 정의한 표현식
  • 이 표현식은 다른 Batch Process 도구에서도 자주 사용됨


크론 표현식 제너레이터 사이트 : http://www.cronmaker.com

Linux Crontab 문제점

  • 재실행 및 알람
  • 파일을 실행하다 오류가 발생한 경우, 크론탭이 별도의 처리를 하지 않음
  • 예) 매주 일요일 07:00에 predict.py를 실행하다가 에러가 발생한 경우, 알람을 별도로 받지 못함
  • 실패할 경우, 자동으로 몇 번 더 재실행(Retry)하고, 그래도 실패하면 실패했다는 알람을 받으면 좋음 - 과거 실행 이력 및 실행 로그를 보기 어려움
  • 여러 파일을 실행하거나, 복잡한 파이프라인을 만들기 힘듬
    Crontab은 간단히 사용할 수는 있지만, 실패 시 재실행, 실행 로그 확인, 알람 등의 기능은 제공하지 않음

2) 스케줄링 워크플로우 전용 도구의 등장

Airflow

현재 스케줄링, 워크플로우 도구의 표준

  • 에어비앤비(Airbnb)에서 개발
  • 현재 릴리즈된 버전은 2.2.0으로, 업데이트 주기가 빠름
  • 스케줄링 도구로 무거울 수 있지만, 거의 모든 기능을 제공하고, 확장성이 넓어 일반적으로 스케줄링과 파이프라인 작성 도구로 많이 사용
  • 특히 데이터 엔지니어링 팀에서 많이 사용

1) 파이썬을 사용해 스케줄링 및 파이프라인 작성

2) 스케줄링 및 파이프라인 목록을 볼 수 있는 웹 UI 제공

3) 스케줄링 및 파이프라인 목록을 볼 수 있는 웹 UI 제공

4) 스케줄링 및 파이프라인 목록을 볼 수 있는 웹 UI 제공

  • 실패 시 알람
  • 실패 시 재실행 시도 - 동시 실행 워커 수
  • 설정 및 변수 값 분리
profile
AI Learning, Parcelled Innovations, Carrying All

0개의 댓글