본문 바로가기
Development/Python

Airflow

by IMCOMKING 2020. 2. 11.

Airflow

튜토리얼


에어플로우는 dask와 유사한 프로젝트로, 분산 환경에서의 python 자동 실행 스케줄러이다. 그런데 dask에서 더 나아가서 자동으로 지정된 시간과 조건에 따라 스크립트를 순차적으로 실행시켜주는 젠킨스(?) 와 같은기능도 한다.


Airflow에 새로운 패키지 설치하기

worker, scheduler, webserver 세군데에 모두 동일한 python 패키지를 설치해주어야만 에러가 나지 않는다. 실제 실행되는 환경은 worker이지만, scheduler와 webserver도 실행할 수 있어야 에러가 나지 않는다.(이는 dask와 동일한 부분)

그래서 requirements.txt를 생성해서 각각의 컨테이너에 전달하여 간단한 패키지는 쉽게 설치할 수 있다.

그러나 복잡한 설치를 요하는 경우, 이러한 방법으로는 할 수가 없다.
그래서 이런 경우 위 세개의 컨테이너에서 /entrypoint.sh 를 수정한 다음 컨테이너를 재시작 하는 방법을 써야한다.



DAG 스케줄 인터벌 설정하기

기본 튜토리얼에서는 DAG의 실행주기를 결정하는 schedule_interval 값에 timedelta(days=1) 와 같은 방식으로 입력하도록 나온다. 그런데 좀 더 디테일한 설정을 하고 싶으면 crontab schedule을 사용할 수 있다.
쉽게 말하면 아래와 같다.


즉, schedule_interval='0 10 * * *' 이렇게 입력하면 매일 아침 10시에 실행이 되는 것이다.




Task 간의 dependency 설정하기

task_download_nubes >> task_update_mongo >> task_save_excel

이렇게 >> 오퍼레이션을 이용해서 task간의 dependency를 정의할 수 있다.



댓글