Airflow 개발환경 셋팅하기 (on Docker)

bradley·2022년 8월 4일
3

Airflow

목록 보기
1/16
post-thumbnail
post-custom-banner

필요한 S/W


  • Docker
  • Docker Compose
  • Linux

Linux와 Docker를 이용하여 Local에 Airflow를 구축할 예정이다. 따라서 Linux와 Docker를 설치해줘야 한다.
이 포스팅은 Windows OS 사용자를 기준으로 한다.
Windows 사용자는 아래 포스팅을 통해 Linux와 Docker를 설치하면 된다.

Windows에서 Linux 사용하기 (with WSL2)
https://velog.io/@jskim/Windows%EC%97%90%EC%84%9C-Linux-%EC%82%AC%EC%9A%A9%ED%95%98%EA%B8%B0-with-WSL2

Docker Desktop 설치
추후 포스팅 예정

환경 초기화


pip3 설치하기

DAG는 python으로 작성하게 된다. python으로 DAG를 작성할 때 필요한 라이브러리 중 하나인 airflow를 설치한다.

1) apt를 업데이트 한 뒤 pip3를 설치한다.

sudo apt update && sudo apt install python3-pip

2) pip3 설치 여부 확인

pip3 --version

3) airflow 라이브러리를 설치한다.

pip3 install apache-airflow

workspace 및 설정 파일 만들기

workspace 생성

우선 홈 디렉토리에서 airflow 전용 workspace를 만들어준다. 아래와 같은 구조로 폴더 트리를 구성하면 된다.


airflow : airflow 관련 디렉토리와 설정 파일 등을 담을 workspace
dags : DAG 파일들이 위치할 곳. 즉 파이썬 스크립트 .py를 여기에 저장하면 된다.
logs : task 실행 및 스케줄러의 로그가 담겨진다.
plugins : 사용자 정의 플러그인을 여기에 넣을 수 있다.

설정 파일 생성

./airflow로 이동하여 .env 파일을 생성해준다.
Airflow 공식 홈페이지의 설치 방법에 따라 설치하기 위해서는 Linux 상에서 host user id를 알아야 하고 group id가 0이어야 한다. 그렇지 않으면 dags, logs, plugins 안에 생성되는 파일은 root user로 생성된다.

Docker 설정

Settings - Resources - WSL INTEGRATION에서 사용하고 있는 WSL 배포판을 활성화 시켜준다.

Airflow 설치하기


airflow 디렉토리에서 curl 명령을 통해 docker-compose.yaml 파일을 내려받는다.
curl -LfO 'https://airflow.apache.org/docs/apache-airflow/2.3.3/docker-compose.yaml'

docker-compose.yaml에 작성된 서비스 몇 개를 보면 다음과 같다.

  • airflow-scheduler : 스케줄러는 tasks와 DAGs를 모니터링한 다음 종속성이 완료된 후 task instance를 trigger한다.
  • airflow-webserver : 웹서버는 http://localhost:8080 을 사용한다. 웹서버는 docker를 이용해 airflow 서비스를 실행시킨 뒤 확인할 수 있다.
  • airflow-worker : 스케줄러에 의해 주어진 tasks를 실행한다.
  • airflow-init : 서비스를 초기화한다.
  • postgres : airflow의 기본 데이터베이스
  • redis : 스케줄러에서 worker에게 message를 전달하는 broker

Airflow 서비스 실행하기


DB 초기화

DB migrations을 실행하고, Airflow 계정을 만들 필요가 있다.
docker-compose.yaml이 위치한 airflow 디렉토리에서 아래 명령을 실행한다.

docker-compose up airflow-init

아래와 같은 메세지를 받으면 초기화가 완료된다.

Airflow 실행하기

아래 명령어를 통해 모든 서비스를 실행한다.
docker-compose up

새 Ubuntu 터미널을 열어 docker ps를 실행하면 컨테이너들이 실행되는 것을 확인할 수 있다.

Airflow 명령을 위한 셋팅

Airflow 명령을 내리기 위해서는 다음 명령어처럼 docker의 각 서비스에서 명령을 실행시켜야 한다.

docker-compose run airflow-worker airflow info

이 번거로움을 줄이기 위해 Airflow는 간편히 Airflow 명령어를 실행하기 위한 래핑된 Shell script를 제공한다.

airflow.sh을 다운받는다.

curl -LfO 'https://airflow.apache.org/docs/apache-airflow/2.3.3/airflow.sh'

airflow.sh 파일 실행 권한을 부여한다.

airflow.sh 파일을 통해 위에 실행했던 명령어를 간단히 실행할 수 있음을 확인할 수 있다.

./airflow.sh info

Airflow 웹페이지 접속하기

서비스들이 가동 중인 상태에서 http://localhost:8080 에 접속하면 Airflow 웹페이지를 볼 수 있다.
기본 계정으로 로그인을 해준다.

기본 계정

  • ID : airflow
  • PW : airflow

샘플 DAGs 들이 리스트에 나열된다.

샘플 DAG 삭제하기

샘플 DAGs가 지저분할 수 있다.
그 경우 다음과 같은 방법으로 샘플 DAGs를 비활성화시킬 수 있다.

vicode 명령어를 이용해 docker-compose.yaml 파일의 AIRFLOW__CORE__LOAD_EXAMPLES 값을 false로 바꿔준다.

AIRFLOW__CORE__LOAD_EXAMPLES: 'false'

실행되고 있는 Airflow 서비스들을 Ctrl + C를 눌러 종료한 뒤 docker-compose up 명령으로 재가동 시켜준다.

http://localhost:8080 에 접속하면 샘플 DAGs 들이 나타나지 않는 것을 볼 수 있다.

profile
데이터 엔지니어링에 관심이 많은 홀로 삽질하는 느림보
post-custom-banner

1개의 댓글

comment-user-thumbnail
2023년 1월 21일

안녕하세요 운영자님
인카토스입니다.
먼저, 댓글로 인사를 드리게 된 점 양해 부탁 드립니다.
이렇게 연락 드린 이유는 이번에 저희가 제작한 도커 각티슈케이스 제품 협찬을 제안드리고 싶어서 연락 드렸습니다.
개발자들에게 많은 사랑은 받은 각티슈케이스입니다.
저희 상품 블로그 포스팅이 가능하실지 여쭙고자 연락드렸습니다.
아니면 클리앙,서버포럼, okky,2cpu,그누보드 등 가입되어 있으신 개발자 커뮤니티가 있으시다면 해당 커뮤니티에 아래와 비슷하게 게시글을 올려주실수 있을까요?

클리앙 : https://www.clien.net/service/board/park/17797443

연락드릴수 있는방법이 댓글밖에 보이지 않아 이렇게 먼저 연락드립니다.

협찬제안에 긍정적인 검토 부탁드리고 제안이 마음에 드신다면 하기 메일로 메일주시면 제품 보내드리도록 하겠습니다.

sungjh0726@naver.com

협찬제품 링크 : https://incatos.shop/surl/P/11

답글 달기