본문 바로가기
Airflow

[Airflow] Linux(Ubuntu)환경에서 Airflow 설치

by 또개해삼 2022. 9. 30.

본 포스팅은 Apache Airflow 설치 방법과 Airflow란 무엇인지 정리한 포스팅입니다.

 

💡 Apache Airflow ?

Airflow란 AirBnb에서 만든 workflow 관리 툴입니다. workflow는 일련의 작업의 흐름이며, 예를 들어서 ETL 같은 경우는 데이터를 추출 -> 변환 -> 적재하는 workflow를 관리해주는 툴이 Airflow입니다.

 

airflow 구조

  • Scheduler - Airflow의 DAG와 작업들을 모니터링하고 실행 순서와 상태 관리
  • Workers - Airflow의 작업을 실행하는 공간
  • Metadata Database - Airflow에서 실행할 작업에 관한 정보들을 저장
  • Webserver - Airflow의 user interface 제공
  • DAG directory - Airflow에서 실행할 작업들을 파이프라인 형태로 저장

 

즉, Airflow는 Scheduler가 DAG directory의 작업을 가져와서 Workers에서 실행하는 형태라고 할 수 있습니다.

 

💡 DAG ?

DAG는 비순환 그래프로써 순환하는 싸이클이 없는 그래프입니다. 즉, 노드와 노드가 단방향으로 연결되어 있어 그 노드로 향하게 되면 돌아오지 않는 특성을 가지고 있습니다. Airflow에서는 Task의 연결관계를 DAG로 관리하고, Webserver를 통해서도 DAG 구조를 시각적으로 확인할 수 있다.

 

OS : ec2(Ubuntu 20.24)

공식 문서 가이들 따라 했으며 더 자세한 것은 공식문서를 참고해주시면 될 것 같습니다.

 

 

1. Dependencies 설치

sudo apt-get update -y
sudo apt-get install -y --no-install-recommends \
        freetds-bin \
        krb5-user \
        ldap-utils \
        libsasl2-2 \
        libsasl2-modules \
        libssl1.1 \
        locales  \
        lsb-release \
        sasl2-bin \
        sqlite3 \
        unixodbc \
        postgresql \
        python3-pip \
        python3-testresources

 

2. 환경 변수 설정

  • Airflow를 설치하기 앞서 먼저 경로와 환경 변수 설정을 세팅해야 됩니다. Airflow 공식 문서에 나와 있듯이 Airflow는 기본 경로를 '~/airflow'로 설정하는 것을 권장합니다. 즉, 사용자 계정인 경로를 선호하고 있습니다. 
  • Airflow 버전을 어떤 것으로 설치할 것이고, Python 버전은 무엇인지 등을 세팅하고 Airflow를 설치합니다.
export AIRFLOW_HOME=~/airflow
export AIRFLOW_VERSION="2.1.2"
export PYTHON_VERSION="$(python3 --version | cut -d " " -f 2 | cut -d "." -f 1-2)"
export CONSTRAINT_URL="https://raw.githubusercontent.com/apache/airflow/constraints-${AIRFLOW_VERSION}/constraints-${PYTHON_VERSION}.txt"
export PATH=$PATH:/home/ubuntu/.local/bin

 

3. Airflow 설치

  • 환경 세팅이 끝나면 Airflow 설치를 진행합니다.
    • Airflow 설치된 경로 : /Users/user_name/airflow
    • Python 버전 : Python3.8
    • Airflow 버전 : 2.1.2
pip install "apache-airflow==${AIRFLOW_VERSION}" --constraint "${CONSTRAINT_URL}"

 

4. DB 초기화

  • DB를 초기화시키면 airflow 디렉터리가 생기고 그 안에 초기화되어 Airflow 실행에 필요한 파일이 생성됩니다.
    • airflow.cfg : airflow의 환경설정 파일
    • airflow.db : SQLite DB 파일
    • logs : airflow의 각종 로그를 관리
    • webserver_config.py : 웹서버 설정을 위한 config 파일
airflow db init

 

5. 사용자 생성

  • airflow를 관리할 사용자 계정을 하나 만들어줍니다.
airflow users create \
	--username admin \
	--firstname admin \
	--lastname admin \
	--role Admin \
	--email admin@naver.com

 

6. Airflow web server 실행

  • airflow webserver를 실행시켜서 web ui를 확인할 수 있습니다.
# web 서버 시작
airflow webserver --port 8080

# 스케쥴러 시작
airflow scheduler

 

  • http://localhost으로 접속이 가능하지만 현재 ec2 ubuntu를 사용했으므로, ec2의 hostname:8080으로 접속해서 확인해야 됩니다. 

 

 

  • 접속이 안되시면 ec2 보안 그룹에 22,8080 포트를 열어두어야 합니다.

 

 

아까 생성한 airflow계정으로 접속하시면 airflow web ui를 확인할 수 있습니다.  Dags 아래에 airflow example dags들이  존재하는데 보기 불편함으로 example을 보이지 않도록 하려면 약간의 설정이 필요합니다.

 

 

  • airflow.cfg 파일을 열어서 load_examples를 False로 설정
# load_examples = False로 설정
vi airflow.cfg

 

 

  • airflow db를 삭제하고 다시 airflow db init 명령어로 db를 초기화해줍니다.
#airflow.db를 삭제
rm -rf airflow.db

#db다시 초기화
airflow db init

 

  • db를 초기화했으므로 사용자도 다시 만들어 줍니다.
airflow users create \
	--username admin \
	--firstname admin \
	--lastname admin \
	--role Admin \
	--email admin@naver.com

 

  • airflow web server를 켜보면 example이 없어진 것을 확인할 수 있습니다.