설치하기에 앞서

설치 환경

이번 포스팅에서는 (1) 도커를 이용한 설치 방법과, (2) 파이썬 패키지 관리 툴(pip)을 이용한 설치 방법 두 가지를 소개할 것입니다. 적합한 설치 환경을 가지고 있는지, 그리고 도커 및 파이썬에 대한 기반 지식에 대해 체크하기 바랍니다.

-OS : Linux Ubuntu 22.04.3
-Docker : 27.3.1
-Docker Compose : 2.29.7
-Python 3.10.0

설치 방법의 차이

설치 방법 pip 를 이용한 설치 도커를 이용한 설치
선택 기준 - 소규모 프로젝트, Airflow 배우기
- 단일 머신에서 실행
- 리소스가 제한적인 환경
- 대규모 프로젝트, 복잡한 워크플로
- 분산 처리가 필요한 경우
- 배포의 안정성과 확장성이 우선인 때
장점 - 단순한 구조, 환경설정 - 격리된 개발 환경 (환경 일관성)
- 운영 환경에 관계 업이 안정적인 배포
- 서비스에 대한 세밀한 세팅
단점 - 의존성 충돌 가능성 - 여러 컨테이너로 인한 자원사용, 복잡성

도커를 이용한 설치 방법

(1) 도커 및 도커 컴포즈 설치

도커 설치 방법
도커 컴포즈 설치 방법

(2) Airflow Docker Compose 파일 다운로드

1
wget https://airflow.apache.org/docs/apache-airflow/stable/docker-compose.yaml

(3) Airflow 환경 파일 설정

.env 파일에 도커를 실행시킬 때 읽어들일 환경 변수를 설정합니다.

1) uid 세팅

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

2) bind mount 하는 호스트 디렉터리 설정

1
vi ./.env
1
AIRFLOW_PROJ_DIR=./    # bind mount 하는 데이터를 저장팔 디렉터리

(4) Docker Compose 설정

  • 프로그램 작동 환경에 맞춰 docker compose 파일에서 필요한 설정값을 조정합니다.
  • 특히 포트설정!
1
nano ./docker-compose.yaml
1
2
3
4
5
6
7
8
9
...
airflow-webserver:
    ports:
      - "호스트포트":"컨테이너안쪽포트"
    volumes:
      - 호스트경로:/opt/airflow/dags    # DAG 파일을 호스트에 공유
      - 호스트경로:/opt/airflow/logs    # 로그 디렉터리
      - 호스트경로:/opt/airflow/plugins # 플러그인 디렉터리
...

(5) docker run

Docker Compose up 명령어를 통해 Airflow 서비스들을 실행시킵니다.

1
docker compose up -d

pip 패키지 관리 툴을 이용한 설치 방법

(1) Python 및 pip 설치

Airflow는 Python 기반이므로 Python과 pip 가 설치되어있어야 합니다.

1
2
3
4
5
6
7
8
9
# conda 설치
mkdir ~/miniconda3
wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh -O ~/miniconda3/miniconda.sh
bash ~/miniconda3/miniconda.sh -b -u -p ~/miniconda3
rm ~/miniconda3/miniconda.sh

# 직접 설치
sudo apt update
sudo apt install -y python3 python3-pip

(2) 가상환경 생성 및 활성화

충돌 방지를 위해 가상환경에서 airflow 관련 세팅을 하는 것을 추천합니다.

1
2
3
4
5
6
7
8
# conda 사용시
conda create -n airflow python==버전
conda activate airflow

# venv 사용시
sudo apt install python3-venv
python3 -m venv airflow_env
source airflow_env/bin/activate

(3) 환경 변수 설정

Airflow의 기본 작업 디렉터리인 AIRFLOW_HOME 을 환경변수에 지정합니다.

1
export AIRFLOW_HOME=~/airflow

(4) Airflow 설치

Airflow 는 Python의 패키지이므로 pip 를 이용해 설치합니다.

1
pip install apache-airflow

(5) Airflow 초기화

Airflow 데이터베이스를 초기화 합니다.

1
airflow db init

(6) 관리자 생성

웹 UI에서 접근하기 위해 관리자 게정을 생성합니다.

1
airflow users create --username admin --firstname admin --lastname user --role Admin --email abc@abc.com

명령어 실행 후 Password 를 요구하는데, 생성하는 admin 계정에 대한 패스워드를 입력해주면 됩니다.

(7) Airflow 실행

1
2
3
4
5
# airflow 웹서버 실행 (포트 미지정시 기본 8080)
airflow webserver --port 포트번호 # 백그라운드 실행시에는 -D 옵션

# 스케줄러 실행
airflow scheduler # 백그라운드 실행시에는 -D 옵션

접속과 종료

접속

웹브라우저에서 주소창에 <서버ip 혹은 도메인>:<지정 포트> 를 입력하여 웹 UI에 접근이 가능합니다.(e.g. http://192.168.0.10:8080)

종료

(1) docker 를 사용한 경우

docker compose down 명령어로 컨테이너들을 중지시키고 제거합니다.

1
docker compose down

(2) 패키지 관리 툴로 설치, 실행한 경우

프로세스 ID를 찾아서 kill 명령어로 종료시키거나, 서비스명을 찾아 프로세스를 종료시킵니다.

1
2
pkill -f "airflow webserver"
pkill -f "airflow scheduler"

또는

1
2
3
4
5
ps aux | grep "airflow webserver"
kill <PID>

ps aux | rep "airflow scheduler"
kill <PID>

Airflow 디렉터리 살펴보기

Airflow 디렉터리 (AIRFLOW_HOME)은 아래와 같은 구조를 가지고 있습니다.

1
2
3
4
5
6
7
8
drwxr-xr-x 4 root root    4096 Jan 28 05:10 .
dr-xr-x--- 1 root root    4096 Jan 28 04:32 ..
-rw-r--r-- 1 root root       4 Jan 28 04:34 airflow-webserver.pid
-rw------- 1 root root   87122 Jan 28 04:31 airflow.cfg
-rw-r--r-- 1 root root 1232896 Jan 28 05:10 airflow.db
drwxr-xr-x 2 root root    4096 Jan 28 05:09 dags
drwxr-xr-x 4 root root    4096 Jan 28 04:34 logs
-rw-r--r-- 1 root root    4762 Jan 28 04:34 webserver_config.py

Reference

Apache Airflow 공식 doc

Comments