본문 바로가기

Data Engineering/Apache Airflow

[Airflow] Docker로 Apache Airflow 설치하기 (with 공식 문서🧐)

데이터 파이프라인의 자동화를 구현해보고 싶어 Airflow에 대해 알아보았다.
 

Apache Airflow

Airflow is a platform to programmatically author, schedule and monitor workflows.

Airflow는 Python 프로그래밍 언어를 통해 워크플로우를 작성하고 스케줄링, 모니터링하는 플랫폼이다.
 
💡 데이터 파이프라인 내에서는 데이터가 이동하며 정해진 처리를 반복한다. 이때 각각의 처리를 태스크라고 부르는데 데이터 파이프라인이 복잡해지거나, 태스크 수가 증가할수록 테스크 실행에 문제가 생길 수 있다. Airflow와 같은 워크플로우 관리 도구는 1) 정기적으로 태스크를 실행하고 2) 비정상적인 상태를 감지하여 이를 해결하는 역할을 한다.
 

Architecture Overview

Airflow의 워크플로우는 DAG(a Directed Acyclic Graph)으로 표현되고, Task라고 불리는 개별 작업을 포함한다. DAG은 Task간의 의존 관계와 실행 순서를 지정한다. 
 

apache airflow

Airflow는 다음과 같은 요소로 구성된다.
 

  • Scheduler: 실행해야할 Task를 스케줄링한다.
  • Web Server: DAG과 Task의 동작을 검사하고, 실행하고, 디버깅할 수 있는 사용자 인터페이스를 제공한다.
  • DAG: 개발자가 Python으로 작성한 워크플로우다.
  • Database: Scheduler, Executor, Web Server에서 상태를 저장하기 위해 사용하는 메타데이터 데이터베이스이다.

 

apache airflow

Running Airflow in Docker

Airflow를 실행해보자.

* Window 환경에서 진행했고 Docker는 이미 설치된 상태이다.

 
우선 airflow 폴더를 만들고 docker-compose.yaml을 받자. 
 

$ curl -LfO 'https://airflow.apache.org/docs/apache-airflow/2.3.1/docker-compose.yaml'
mkdir -p ./dags ./logs ./plugins ./config

 
해당 파일에는 아래와 같은 것들이 포함된다.
 

  • airflow-scheduler
  • airflow-webserver: http://localhost:8080 웹 서버 사용
  • airflow-worker: 스케줄러에서 지정한 작업 실행
  • airflow-init: 서비스 초기화
  • postgres: 데이터베이스
  • redis: 스케줄러에서 워커로 메시지를 전달하는 브로커 

 
다음은 마이그레이션을 실행하고 첫번째 사용자 계정을 만드는 명령이다.
 

$ docker-compose up airflow-init

* 만들어진 사용자 계정의 아이디와 비밀번호는 airflow이다.

 
 
이때 AIRFLOW_UID is not set 경고가 뜰텐데 이를 없애고 싶으면 docker-compose.yaml과 같은 폴더에 아래와 같이 .env 파일을 만들면 된다.
 

$ echo -e "AIRFLOW_UID=$(id -u)\nAIRFLOW_GID=0" > .env

 
이제 airflow를 실행해보자.
 

$ docker-compose up

 

위와 같이 떴다면 👍

 
기본 포트 8080으로 접속하면 아래와 같이 UI를 확인할 수 있다.

📌 로그인을 하면 예제 DAG들이 나오는데 이를 지우기 위해서는 docker-compose.yaml 파일의 AIRFLOW__CORE__LOAD_EXAMPLES 값을 false로 바꿔주면 된다.
 
일단 오늘은 공식문서의 Quick Start와 다른 블로그 글들을 참고해서 Airflow에 대해 알아보고 설치까지 해보았다. 내일은 튜토리얼을 뿌셔보겠다.
 
 
 


참고자료

 

Running Airflow in Docker — Airflow Documentation

airflow.apache.org

 

빅데이터를 지탱하는 기술 - YES24

현대 비즈니스의 성패는 데이터 수집과 통합, 그리고 처리 방법에 달렸다!데이터 처리 전문가가 알려주는 빅데이터와 관련 기술의 모든 것!`데이터 처리를 어떻게 시스템화할 것인가?` 『빅데이

www.yes24.com

 

Airflow란?

Airflow에 대한 개념

velog.io