Docker 기반 Airflow 구축

Nowod_K·2024년 5월 21일
0
post-custom-banner

리눅스 환경 세팅

파이썬 설치

sudo apt update

sudo apt install software-properties-common

sudo add-apt-repository ppa:deadsnakes/ppa

sudo apt install python3.8

[추가 파이썬 패키지]

pip install apache-airflow

pip install boto3

mysql관련 패키지 설치시 사전 작업 :

sudo apt install default-libmysqlclient-dev pkg-config -y

pip install apache-airflow-providers-mysql

pip installapache-airflow-providers-oracle

pip install pandas

서버 시간 변경

sudo timedatectl set-timezone Asia/Seoul

도커 설치

[우분투 시스템 패키지 업데이트]

sudo apt-get update

[필수 패키지 설치]

sudo apt-get install apt-transport-https ca-certificates curl gnupg-agent software-properties-common

[Docker 공식 GPG키 추가]

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -

[Docker 공식 apt 저장소 추가]

sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"

[Docker 설치]

sudo apt-get install docker-ce docker-ce-cli containerd.io

docker compose 설치

sudo curl -L https://github.com/docker/compose/releases/latest/download/docker-compose-$(uname -s | tr '[:upper:]' '[:lower:]')-$(uname -m) -o /usr/bin/docker-compose && sudo chmod 755 /usr/bin/docker-compose && docker-compose --version

[설치 후 확인]

sudo systemctl status docker

sudo systemctl start docker

sudo systemctl stop docker

sudo systemctl restart docker

Docker 그룹에 User 추가

sudo groupadd docker

sudo usermod -aG docker $USER

[적용된 유저 바로 적용]

newgrp docker

Airflow 설치 - Docker Compose 기반

airflow - docker compose 다운로드

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

airflow 구동

[Airflow 부팅을 위한 DB 준비 (postgre, redis)]

sudo docker-compose up airflow-init

[Airflow 실행]

sudo docker-compose up -d

설정 관련 주요 변경사항 정리

  • airflow Dockerfile 세팅

pip 패키지 관리를 위하여 requirements.txt 생성

custom 이미지 생성을 위하여 Dockerfile 세팅 (Docker-compose 내의 image → build: . 로 변경)

  • airflow.cfg 연동

docker-compose.yaml 파일 내 volumes 부분 수정

폴더별 맵핑 폴더 지정 및 airflow.cfg 파일 마운트

  • airflow.cfg 관련 수정 (연동 후)
  1. default_timezone 변경 : utc → Asia/Seoul
  • airflow 구동 시 웹서버상의 시간 조정 (DAG에는 적용 안됨, 따로 적용해야함)
  1. load_examples 변경 : True → False
  • airflow 내부 샘플 DAGS를 보여주지 않도록 조정
  1. dag_dir_list_interval 변경 : 300 → 60
  • 로컬에서 변경된 Dag 파일을 불러오는 시간 조정 5분 → 1분

DAG 파일 내 로컬 타임존 적용 방법

  • 파이썬 패키지 중 pendulum 사용 (pendulum은 airflow 설치 시 내장되어 있음)
from datetime import datetime
import pendulum

local_tz = pendulum.timezone("Asia/Seoul")

default_args = {
    ...,
    "start_date": datetime(2022,6,7, tzinfo=local_tz),
    ...
}
profile
개발을 좋아하는 마음과 다양한 경험을 토대로 좋은 개발자가 되고자 노력합니다.
post-custom-banner

0개의 댓글