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 사용 방법
- 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에서 수정할 수 있다.
활용 방법은 다음 글에서
'Airflow' 카테고리의 다른 글
Airflow PostgresOperator Custom 하기 (0) | 2022.03.17 |
---|---|
Airflow custom Operator 만들기 (2) | 2022.03.16 |
Airflow 메일 전송, EmailOperator, SMTP, Gmail (0) | 2022.03.15 |
Airflow BranchSQLOperator 활용 (0) | 2022.03.14 |
Docker Airflow Oracle 활용하기 (0) | 2022.03.10 |