이번 글에서는 `Apache Airflow`를 설치하는 과정에 대해 정리하려고 한다.
`Airflow`를 설치하는 방법은 다양하게 존재하는데 이번 글에서는 1. `Python` 가상 환경을 통해 설치하는 과정이랑 2. `Docker Compose`를 이용해 설치하는 과정을 정리하려고 한다.
다양한 설치 방법은 Airflow 공식 홈페이지에서 확인할 수 있다.
1. Python 가상 환경을 이용한 설치
`Python` 가상 환경을 사용하면 `Airflow`를 독립된 환경에서 실행할 수 있어 시스템 패키지와 충돌을 방지할 수 있다.
이제 `Python` 가상 환경을 이용한 `Airflow` 설치 과정을 알아보자
1.1. pyenv 설치
`Python` 가상 환경을 사용하기 앞서 `pyenv`를 설치해주어야 한다.
curl https://pyenv.run | bash
설치가 완료되면 ~/.bashrc에 다음을 추가하고 적용한다.
export PYENV_ROOT="$HOME/.pyenv"
[[ -d $PYENV_ROOT/bin ]] && export PATH="$PYENV_ROOT/bin:$PATH"
eval "$(pyenv init - bash)"
source ~/.bashrc
다음으로 설치된 `pyenv`의 버전을 확인하고 버전이 낮다면 최신 버전의 `pyenv`를 설치해준다.
pyenv --version
pyenv install 3.9.6
pyenv local 3.9.6
1.2. 가상 환경 생성 및 활성화
완료 되었으면 가상 환경을 생성하고 이를 활성화 한다. 생성과 활성화는 다음과 같이 할 수 있다.
python -m venv <이름> # 가상 환경 생성
source <이름>/bin/activate # 가상 환경 활성화
1.3. Airflow 설치
이제 `airflow`를 설치해보자. 다음과 같은 명령어로 `airflow`를 설치할 수 있다.
pip install "apache-airflow[celery]==2.10.5" --constraint "https://raw.githubusercontent.com/apache/airflow/constraints-2.10.5/constraints-3.8.txt"
설치가 완료되면 홈 디렉토리에 `airflow` 디렉토리가 생성되어 있을 것이다.
1.4. Airflow 초기 설정
다음으로는 Airflow의 환경변수 설정과 Airflow의 초기 데이터베이스를 설정을 진행한다.
export AIRFLOW_HOME=~/airflow
airflow db migrate
따로 설정하지 않는다면 기본적으로 `sqlite` db를 사용한다.
웹서버에 접속하기 위한 계정을 만들어준다. 본인에게 맞는 정보를 입력하면 된다.
airflow users create \
--username <username> \
--firstname <firstname> \
--lastname <lastname> \
--role Admin \
--email <email>
실행하게 되면 위 그림처럼 Password를 입력하라고 한다. Password 설정도 마쳤으면 계정 생성은 끝난다.
1.5. Airflow 실행
모든 설정이 끝났으면 webserver를 실행할 수 있다. 명령어는 다음과 같다.
airflow webserver
airflow webserver --port <port>
# 백그라운드
airflow webserver -D
airflow webserver --port <port> -D
실제 접속을 해보면 다음과 같은 화면을 확인할 수 있다.
앞서 만든 계정을 통해 로그인하여 접속하면 다음과 같은 화면을 확인할 수 있다.
접속해보면 많은 warning이 있는데 그중 하나가 scheduler가 동작중이지 않다는 것이다. 따라서 scheduler를 실행해주어야 한다.
scheduler 실행 명령어는 다음과 같다.
airflow scheduler
다시 웹서버로 접속을 해보면 airflow에서 만들어놓은 example dag들이 생긴 것을 확인할 수 있다.
따라서, 이러한 웹서버를 통해 DAG들을 시각적으로 확인할 수 있으며 실행 상태를 모니터링하거나, 새로운 DAG을 추가하고 관리할 수도 있다.
1.6. Example DAG들 제거
나중가면 이러한 Example DAG들은 필요 없기 때문에 지우고 싶을 수 있는데 없애는 방법은 다음과 같다.
먼저 airflow 디렉토리의 airflow.cfg 파일을 수정해주어야 한다.
이 파일을 보다 보면 `load_examples = True`를 확인할 수 있는 데 이를 False로 바꾸어준다.
그 후, 웹서버와 스케줄러를 모두 종료하고 다시 실행해주면 이러한 Example DAG들은 안보이게 된다ㅏ
2. Docker Compose를 이용한 설치
위에서 Python 가상 환경을 통해 설치하는 과정을 정리했는데 조금 복잡한 부분이 있다.
하지만 Docker Compose를 이용하면 훨씬 간단하게 설치와 구성이 가능하다.
2.1. docker-compose.yml 받아오기
Docker를 통해 설치하기 위해 docker-compose.yml을 받아와야한다. 다음과 같은 명령어로 수행할 수 있다.
curl -LfO 'https://airflow.apache.org/docs/apache-airflow/2.10.5/docker-compose.yaml'
2.2. 초기 설정
airflow를 구성하기 위해 필요한 디렉토리들을 만들어야 한다.
또한 그룹 아이디를 docker-compose에 맞게 구성해주어야한다.
mkdir -p ./dags ./logs ./plugins ./config
echo -e "AIRFLOW_UID=$(id -u)" > .env
다음으로 웹서버의 포트를 수정해주었다. docker-compose.yml 파일에서 다음과 같은 부분을 수정하면 된다. 사용하고 싶은 포트를 사용하면 된다.
다음으로는 사용자 계정을 수정해주었다. 사용자 계정을 수정을 안하면 기본적으로 id: airflow, pw: airflow로 생성되게 된다. `.env` 파일에 다음과 같이 추가해주었다.
이제 초기화를 진행해준다. 명령어는 다음과 같다.
docker compose up airflow-init
다음과 같이 계정 생성도 잘 이루어지는 것을 확인할 수 있다.
2.3. Airflow 실행
이제 초기 설정을 완료했으니 실행을 해보자. 실행 명령어는 다음과 같다.
sudo docker compose up
# 백그라운드
sudo docker compose up -d
docker compose up 명령어를 통해 한번에 모든 컨테이너를 실행 시킬 수 있다.
완료되고 `docker ps` 명령어를 통해 확인해 보면 다음과 같이 컨테이너들이 생성되는 것을 확인할 수 있다.
웹서버에 접속해도 잘 동작한다.
2.4. Example DAG들 제거
Example DAG들을 제거하기 위해 `docker-compose.yml` 파일을 수정해주어야 한다.
다음과 같이 `AIRFLOW__CORE__LOAD_EXAMPLES`를 false로 설정해준다.
AIRFLOW__CORE__LOAD_EXAMPLES: 'false'
그 후 종료후 재시작을 수행한다.
sudo docker compose down # 종료
sudo docker compose up -d # 시작
다시 웹서버로 접속하여 확인해보면 Example DAG들이 없어진 것을 확인할 수 있다.
3. 마무리
이번 글에서는 Python 가상 환경과 Docker를 이용한 Airflow 설치 방법에 대해 정리했다
확실히 Python 가상 환경에서 설치하는 것 보다 Docker를 사용해 컨테이너로 설치하는 방식이 훨씬 간편하고 효율적인 것 같다.
다음 글에서는 Airflow 실습에 대해 포스팅할 예정이다.
'Data Engineering > Airflow' 카테고리의 다른 글
[Airflow] PythonOperator를 이용한 DAG 작성 및 실행 (1) | 2025.03.27 |
---|---|
[Airflow] Apache Airflow란? (0) | 2025.02.17 |