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 설치
추후 포스팅 예정
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
우선 홈 디렉토리에서 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로 생성된다.
Settings - Resources - WSL INTEGRATION에서 사용하고 있는 WSL 배포판을 활성화 시켜준다.
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
DB migrations을 실행하고, Airflow 계정을 만들 필요가 있다.
docker-compose.yaml
이 위치한 airflow 디렉토리에서 아래 명령을 실행한다.
docker-compose up airflow-init
아래와 같은 메세지를 받으면 초기화가 완료된다.
아래 명령어를 통해 모든 서비스를 실행한다.
docker-compose up
새 Ubuntu 터미널을 열어 docker ps
를 실행하면 컨테이너들이 실행되는 것을 확인할 수 있다.
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
서비스들이 가동 중인 상태에서 http://localhost:8080 에 접속하면 Airflow 웹페이지를 볼 수 있다.
기본 계정으로 로그인을 해준다.
기본 계정
샘플 DAGs 들이 리스트에 나열된다.
샘플 DAGs가 지저분할 수 있다.
그 경우 다음과 같은 방법으로 샘플 DAGs를 비활성화시킬 수 있다.
vi
나 code
명령어를 이용해 docker-compose.yaml
파일의 AIRFLOW__CORE__LOAD_EXAMPLES
값을 false
로 바꿔준다.
AIRFLOW__CORE__LOAD_EXAMPLES: 'false'
실행되고 있는 Airflow 서비스들을 Ctrl
+ C
를 눌러 종료한 뒤 docker-compose up
명령으로 재가동 시켜준다.
http://localhost:8080 에 접속하면 샘플 DAGs 들이 나타나지 않는 것을 볼 수 있다.
안녕하세요 운영자님
인카토스입니다.
먼저, 댓글로 인사를 드리게 된 점 양해 부탁 드립니다.
이렇게 연락 드린 이유는 이번에 저희가 제작한 도커 각티슈케이스 제품 협찬을 제안드리고 싶어서 연락 드렸습니다.
개발자들에게 많은 사랑은 받은 각티슈케이스입니다.
저희 상품 블로그 포스팅이 가능하실지 여쭙고자 연락드렸습니다.
아니면 클리앙,서버포럼, okky,2cpu,그누보드 등 가입되어 있으신 개발자 커뮤니티가 있으시다면 해당 커뮤니티에 아래와 비슷하게 게시글을 올려주실수 있을까요?
클리앙 : https://www.clien.net/service/board/park/17797443
연락드릴수 있는방법이 댓글밖에 보이지 않아 이렇게 먼저 연락드립니다.
협찬제안에 긍정적인 검토 부탁드리고 제안이 마음에 드신다면 하기 메일로 메일주시면 제품 보내드리도록 하겠습니다.
sungjh0726@naver.com
협찬제품 링크 : https://incatos.shop/surl/P/11