설치하기에 앞서
설치 환경
이번 포스팅에서는 (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
Comments