Airflow

Airflow 시작하기

김모우 2022. 5. 31. 11:49
728x90
반응형

Airflow란?

Apache에서 제공하는 Workflow 개발 및 데이터 파이프라인을 설계 모니터링할 수 있는 오픈 소스 솔루션입니다.

 

Airflow 장점?

1. 파이썬 코드를 이용해 파이프 라인 구축을 진행하므로 파이썬 언어에서 지원하는 기능을 통해 복잡한 커스텀 파이프라인의 설계가 가능합니다.

 

2. 쉽게 확장이 가능하며 다양한 시스템과 통합이 가능합니다. (ex. DB, Public Cloud SaaS 등..)

 

3. 수 많은 스케줄링 기법을 통해 파이프 라인을 정기 실행 점진적 처리를 가능하게 하며, 재 실행이 필요 없는 효율적인 파이프라인 구축이 가능합니다.

 

4. 백필 기능을 통해 과거 데이터의 재 처리가 용이하며 코드 변경 후 재 생성이 필요한 데이터의 재 처리도 가능합니다.

 

5. WEB UI를 통해 설계한 파이프라인의 상세한 모니터링이 가능하며 오류를 디버깅하기 위한 편리한 View를 제공합니다.

 

환경 구성

Linux OS를 통해 테스트 환경을 구성하였으며 일반 적인 구성 및 기존 Python Library를 보호하기 위한 Sandbox 형태 구성 Docker 구성 총 세 가지를 소개해 드리겠습니다.

 

1. 일반 구성

설치된 Linux OS위에 airflow를설치합니다.
(저는 2.1.0 버전을 사용하였습니다.)
pip install apache-airflow==2.1.0

설치 오류시 의존성 패키지들의 버전을 지정해줍니다.
https://gist.github.com/marclamberti/742efaef5b2d94f44666b0aec020be7c#file-constraint-txt
위의 페이지의 constraint 파일 다운로드
pip install apache-airflow==2.1.0 --constraint==constraint.txt
or
pip3 install apache-airflow==2.1.0 --constraint https://gist.githubusercontent.com/marclamberti/742efaef5b2d94f44666b0aec020be7c/raw/21c88601337250b6fd93f1adceb55282fb07b7ed/constraint.txt

DB 초기화
airflow db init

관리자 계정 생성
airflow user create -u admin -p admin -f Anonymous -l admin -r admin -e admin@airflow.com

Web 서버 실행
airflow webserver

스케줄러 실행
airflow scheduler

 

2. Sandbox 구성

Venv 패키지 설치
sudo apt-get install python3-venv

Sandbox 실행
python3 -m venv sandbox

Sandbox 접속
source sandbox/bin/activate

다음은 위의 내용과 동일합니다.

 

3. Docker 구성

#!/bin/bash
docker run \
docker run -it -p 8080:8080 \
  --entrypoint=/bin/bash \
  --name airflow \
  apache/ariflow:2.1.0-Python3.8 \
  -c '( \
    airflow db init && \
    airflow users create \ 
    -u admin \
    -p admin \
    -f Anonymous \
    -l admin \
    -r admin \
    -e admin@airflow.com
    ); \
airflow webserver & \ 
airflow scheduler \ 
'
728x90
반응형

'Airflow' 카테고리의 다른 글

Airflow - MySqlOperator  (0) 2022.07.29
Airflow - SubDag & TaskGroup  (0) 2022.06.30
Airflow - Executor  (0) 2022.06.28
Airflow DB 변경  (0) 2022.06.27
DAG 작성하기 - 1  (0) 2022.05.31