행궁동 데이터 엔지니어

반응형

부제: Running Airflow in Docker (LocalExecutor)

  • 기대 효과: Airflow를 적은 리소스로 실행할 수 있다.
  • CeleryExecutor보다 가벼운 LocalExecutor로 Airflow를 Docker 환경에서 실행함

 

사전 필요사항

 

본문

개요

Airflow는 공식문서(위의 사전 필요사항 링크)에서 CeleryExecutor로 Docker 환경 위에 Airflow를 실행하는 방법을 제공합니다.

 

공식 문서를 따라 docker-compose.yml 파일을 다운로드하고

docker-compose up 명령어로 Airflow를 실행하면 기본으로 6개 컨테이너가 실행되어 리소스를 많이 잡아먹습니다.

 

공식 docker-compose.yml로  Airflow 실행 시 기본으로 실행되는 컨테이너 리스트 (4GB 이상 메모리 공간 요구)

  1. postgres: Airflow 메타데이터 저장
  2. redis: Tasks 저장용 queue
  3. airflow-webserver: Airflow 웹서버
  4. airflow-scheduler: Airflow 스케줄러
  5. airflow-worker: Airflow 워커
  6. flower: Celery 작업 모니터링

공식 문서에서 제공하는 docker-compose.yml로  Airflow 실행 시 실행되는 컨테이너 리스트

 

 

아래 docker-compose.yml 파일을 사용하면  Airflow를 LocalExecutor로 실행하여 웹서버, 스케줄러, postgres 3개 컨테이너만을 실행함으로 보다 가볍게 Airflow를 실행할 수 있습니다.

LocalExecutor로 실행한 모습, CPU, MEM USAGE 부분을 보면 확실히 리소르를 적게 잡아 먹습니다.

 

LocalExecutor로 Airflow 실행하기 (In Docker)

디렉토리 생성

mkdir airflow-loclexecutor
cd airflow-localexecutor
mkdir dags logs plugins

 

 

docker-compose.yml 파일 생성

 

 

 

 

docker-compose에서 참조할 .env 파일 생성

 

 

 

 

실행

docker-compose up -d

실행 모습

 

위처럼 적은 리소스로 Airflow를 실행하면

PoC 진행, 테스트 환경 구축 또는 워크플로우가 많지 않은 스타트업의 운영 환경(ex. 저사양 EC2에 Airflow 실행)에 활용할 수 있습니다.

 

기타 궁금하신 사항은 편하게 댓글 남겨주세요.

 

감사합니다.

 

참고자료 (docker-compose.yml 파일은 1번 자료를 거의 그대로 복사 했습니다)

1. Marvin Lanhenke님 Medium 블로그, https://towardsdatascience.com/setting-up-apache-airflow-with-docker-compose-in-5-minutes-56a1110f4122

 

Setting Up Apache Airflow with Docker-Compose in 5 Minutes

Create a development environment and start building DAGs

towardsdatascience.com

2. Airflow 공식 문서, https://airflow.apache.org/docs/apache-airflow/stable/start/docker.html

 

 

반응형

이 글을 공유합시다

facebook twitter kakaoTalk kakaostory naver band