Airflow

Docker Airflow 설치하기

pepega 2022. 3. 9. 16:56

Apache Airflow 공식 문서를 토대로 진행하고자 한다.

https://airflow.apache.org/docs/apache-airflow/stable/start/docker.html

 

로컬에서 진행할 예정이다.

공식 문서에 따르면

프로덕션 환경에서 사용하기 위한 것이 아니라고 나온다.

그래서

추후에 "Kubernetes 기반의 Airflow 활용하기"를 올릴 예정이다.

 

 

설치 후 원하고자 하는 활용 방안은 아래와 같다.

 

1. 테이블 조회 후 일정 수치 이상일 경우 알람 메일 발송

2. 서버 피크시간(09시~18시) 이후 매달 초 다량의 데이터를 메일로 전송

 

 

설치 시작

 

1. docker-compose 파일 설치

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

위 docker-compose 안에는 아래와 같은 내용이 있다.

 

Oracle도 활용할 예정인데

추가 내용으로 적도록 하겠다.

+ Airflow Oracle 사용 방법

https://pepega.tistory.com/45

 

  • airflow-scheduler- 스케줄러는 모든 작업과 DAG를 모니터링한 다음 종속성이 완료되면 작업 인스턴스를 트리거
  • airflow-webserver- Airflow 웹서버 http://localhost:8080.
  • airflow-worker- 스케줄러에 의해 주어진 작업을 실행하는 작업자
  • airflow-init- 초기화 서비스
  • flower- 환경 모니터링을 위한 flower. http://localhost:5555
  • postgres- 데이터베이스
  • redis- 스케줄러에서 작업자에게 메시지를 전달하는 브로커

 

컨테이너의 일부 디렉토리가 마운트되어 디렉터리들이 컴퓨터와 컨테이너 간에 동기화 된다.

  • ./dags- DAG 파일을 넣을 수 있음
  • ./logs- 작업 실행 및 스케줄러의 로그를 포함
  • ./plugins- 사용자 정의 플러그인을 추가 가능

 

2. 디렉터리 생성

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

혹은

.env 파일 안에 아래 내용 작성

AIRFLOW_UID=50000

 

3. 데이터베이스 초기화

docker-compose up airflow-init

 

 

4. Airflow 실행

docker-compose up -d
CONTAINER ID   IMAGE                  COMMAND                  CREATED          STATUS                    PORTS                              NAMES
8d4cbb2abac2   apache/airflow:2.2.4   "/usr/bin/dumb-init …"   15 minutes ago   Up 15 minutes (healthy)   0.0.0.0:5555->5555/tcp, 8080/tcp   airflow-flower-1
f8beeb2172a4   apache/airflow:2.2.4   "/usr/bin/dumb-init …"   15 minutes ago   Up 15 minutes (healthy)   0.0.0.0:8080->8080/tcp             airflow-airflow-webserver-1
bb4a0d1abf5f   apache/airflow:2.2.4   "/usr/bin/dumb-init …"   15 minutes ago   Up 15 minutes (healthy)   8080/tcp                           airflow-airflow-scheduler-1
dbaad5d313fa   apache/airflow:2.2.4   "/usr/bin/dumb-init …"   15 minutes ago   Up 15 minutes (healthy)   8080/tcp                           airflow-airflow-triggerer-1
b1f6786ae2fe   apache/airflow:2.2.4   "/usr/bin/dumb-init …"   15 minutes ago   Up 15 minutes (healthy)   8080/tcp                           airflow-airflow-worker-1
15b32e0301de   postgres:13            "docker-entrypoint.s…"   15 minutes ago   Up 15 minutes (healthy)   5432/tcp                           airflow-postgres-1
9f2485ce0638   redis:latest           "docker-entrypoint.s…"   16 minutes ago   Up 15 minutes (healthy)   6379/tcp                           airflow-redis-1

 

5. 웹페이지 접속

http://localhost:8080/

ID : airflow

PW : airflow

 

계정 정보는 docker-compose에서 수정할 수 있다.

 

활용 방법은 다음 글에서