본문 바로가기

Data Engineering/Hadoop Ecosystem

[Airflow Master Class] Docker 및 Airflow 설치

이번 포스팅에서는 Docker 및 Airflow를 설치하는 방법에 대해 정리해 보겠다.
 
그 전에 먼저 Docker(도커)란 무엇인지부터 간략하게 알아보자.

 

Docker란 리눅스 내 가상화 관련 커널을 활용하여 어플리케이션을 독립적인 환경에서 실행시켜주는 기술로,
Guest OS가 존재하는 가상화 서버(VM; Virtual Machine)와 달리 Docker는 Guest OS가 없기 때문에
경량화된 가상화 서버라고 볼 수 있다.

 

음... 이렇게만 적어 놓고 보니 무슨 말인지 통 이해가 안 간다;;
(Docker라는 개념을 처음 접하는 나 같은 사람들은 더더욱 이해가 안 갈 것으로 생각됨..)

 

 

이해를 돕기 위해 아래의 그림을 살펴보자.

 

가상화 VM vs Docker

 
먼저 가상화 VM완전히 독립적인 환경에서 구동된다는 장점이 있으나, CPU나 메모리 및 디스크와 같은 공간을 가상화 서버(Guest OS)에 명시적으로 할당을 해줘야 하기 문에 그만큼 Host OS가 사용할 수 있는 가용 공간이 줄어드는 단점이 있다.
 
반면, Docker가상화 서버(Guest OS) 없이 어플리케이션만 가져와서 독립적인 환경에서 구동 시켜주기 때문에경량화된 가상화 서버(Container)라고 볼 수 있다. , 가상화 VMoverhead 문제를 해결해준다고 보면 되겠다.


위와 같이 Docker 컨테이너(Container)를 띄우려면 WSL에 Docker를 먼저 설치해줘야 하기 때문에, 먼저 Docker를 설치하는 방법에 대해 설명해 보도록 하겠다.
 
<Docker 설치하기>
1. 구글에 "ubuntu docker install"이라고 검색하면 아래의 링크가 나오는 데, 해당 링크를 클릭해서 들어간다.

https://docs.docker.com/engine/install/ubuntu/

 

Install Docker Engine on Ubuntu

 

docs.docker.com

 
2. WSL를 켜서 "Uninstall old versions" 부분의 명령어를 실행하여 이전 버전 관련 내용을 모두 uninstall 하고, "Installation Methods" 부분의 명령어들을 "복사 + 붙여넣기"하여 순차적으로 설치한다.

  • Set up repository
  • Install Docker Engine
  • 위 두 단계를 모두 마치면, WSL에서 아래의 명령어를 실행해서 Docker가 잘 설치되었는지 확인한다.
    • sudo service docker start 명령어는 컴퓨터를 껐다가 WSL 창을 켤 때마다 실행해줘야 한다!
$ sudo service docker start
$ sudo docker run hello-world
  • sudo docker run hello-world 명령어를 실행했을 때, "Hello from Docker!" 라는 문구가 뜨면 성공적으로 설치가 된 것이다.

다음은 Docker를 통해 Airflow를 설치하는 방법에 대해 설명해 보도록 하겠다.
 
Docker Compose를 이용하면 한 번에 쉽게 Airflow 설치가 가능한데, 여기서 Docker Compose란 여러 개의 Docker 컨테이너(Container) 설정을 한 번에 관리하기 위한 확장 기술이라고 보면 되겠다. Docker Compose에는 Airflow를 설치하기 위한 Docker 컨테이너(Container) 셋팅 내용이 들어 있다.
 
<Docker를 통해 Airflow 설치하가>
1. 구글에 "airflow docker install"이라고 검색하면 아래의 링크가 나오는 데, 해당 링크를 클릭해서 들어간다.

https://airflow.apache.org/docs/apache-airflow/stable/howto/docker-compose/index.html

 

Running Airflow in Docker — Airflow Documentation

 

airflow.apache.org

 
2. WSL 창에서 docker-compose.yaml 파일을 다운 받는 명령어를 실행한다. ("Fetching docker-compose.yaml" 부분)

$ curl -LfO 'https://airflow.apache.org/docs/apache-airflow/2.7.0/docker-compose.yaml'

 
3. "Initializing Environment" 부분에서 "Setting the right Airflow user" 부분의 명령어를 실행한다.

$ mkdir -p ./dags ./logs ./plugins ./config
$ echo -e "AIRFLOW_UID=$(id -u)" > .env

 
4. "Initialize the database" 부분의 명령어를 실행한다. (반드시 sudo 명령어를 붙여서 실행할 것. 즉, root 권한으로 실행)

$ sudo docker compose up airflow-init
  • "exited with code 0" 라는 문구가 뜨면 성공적으로 설치가 된 것이다.

 
5. "Running Airflow" 부분의 명령어를 실행한다. (반드시 sudo 명령어를 붙여서 실행할 것. 즉, root 권한으로 실행)

$ sudo docker compose up
  • Prompt 창이 끝나지 않고 HTTP 명령어들이 계속 뜨면 성공적으로 설치가 된 것이다.

 
6. 5단계까지 설치를 완료했다면 실행되고 WSL 창은 끄지 말고 그대로 켜둔 상태에서, 새로운 WSL 창을 하나 켜서 아래의 명령어를 통해 각 컨테이너(Container)들의 상태를 확인해보면 된다. (반드시 sudo 명령어를 붙여서 실행할 것. 즉, root 권한으로 실행)

$ sudo docker ps

 
7. "localhost:8080" 페이지에 접속해서 우리가 띄운 Airflow 서비스에 접속해본다.

  • Username과 Password의 초깃값은 모두 "airflow"이다.
  • 참고로 WSL은 기본적으로 로컬 컴퓨터의 "localhost" 라는 IP랑 연결이 되어 있기 때문에, 로컬 컴퓨터의 웹 브라우저에서 "localhost:8080"을 입력해도 WSL에서 8080 포트를 입력하는 것과 같은 효과를 같고 있다. 이로 인해 로컬 컴퓨터에서 "localhost:8080"을 입력하면 WSL에 떠있는 컨테이너(Container)에 들어갈 수 있는 것이다.

Airflow 서비스가 성공적으로 잘 뜬 화면


추가적으로 Python을 설치할 때 주의할 점이 한 가지 있는데, 반드시 Docker를 통해 설치한 Airflow 환경과 매칭되는 Python 버전을 설치해야 한다는 것이다. 매칭되는 Python 버전을 확인하는 방법은 WSL 창에서 Docker 실행 및 컨테이너 정보 확인한 후, 특정 컨테이너로 접속해서 사용하고 있는 Python 버전을 확인하면 된다. (아래 명령어 참고)

 

$ sudo service docker start -- Docker 실행
$ sudo docker ps -- 컨테이너 정보 확인

-- 특정 컨테이너로 접속
$ sudo docker exec -it {CONTAINER ID} bash -- {CONTAINER ID} 대신 {NAMES}를 입력해도 됨

-- 해당 컨테이너에서 사용하는 Python 버전 확인
$ python -V

 

만약 매칭되는 Python 버전의 File이 존재하지 않는 경우(No installers 문구), Python 다운로드 페이지에서 recommend 해주는 가장 최신 버전을 설치하면 된다. (ex. Python 3.8.17 설치 파일 미존재 시, 3.8.10 버전 설치)

 

더보기

<참고>

적합한 버전의 Python 설치 후, Airflow 라이브러리 설치 시에 WSL에서 pip install 명령어로 Airflow를 설치하는 것은 권장하지 않는다.

 

그 이유는 pip install 명령어로 WSL에서 바로 Airflow를 설치할 경우, 저사양 아키텍처로 설치되기 때문에 여러가지 제약사항이 존재할 수 있다. (ex. Task를 한 번에 1개씩만 실행 가능, Default로 SQLite 사용 등의 제약사항 발생 가능)

 

따라서 반드시 구글에 "airflow pip install" 이라고 검색해서 나오는 아래의 링크에 적힌 pip install 명령어를 통해 local 컴퓨터의 가상 환경에서 설치하기를 권장하는 바이다.

 

https://airflow.apache.org/docs/apache-airflow/stable/installation/installing-from-pypi.html

 

Installation from PyPI — Airflow Documentation

 

airflow.apache.org


여기까지 해서 Docker 및 Airflow 설치 방법, 그리고 해당 환경에 매칭되는 Python 설치 방법까지 알아보았다.
 
처음 설치해보면 다소 어렵게 느껴질 수도 있는데, 차근차근 따라하다 보면 성공적으로 설치를 마칠 수 있을 것이다.
 
<Reference>
- 김현진님의 인프런 Airflow 마스터 클래스 강의