M1에서 Airflow 설치하기

snooby·2022년 7월 28일
1

🌌 Airflow

목록 보기
2/6
post-thumbnail

1. 선제 조건

Python, docker, docker compose
- Python
- docker & docker compose 설치

2. AirFlow 설치

M1 Mac은 airflow 설치에 지원되지 않는 부분이 있어 도커환경을 사용합니다.

가상환경에서 설치합니다.

1) 변수 설정

export AIRFLOW_HOME='/Users/bell.coco/airflow' # 사용자 경로로 수정

# 확인
echo $AIRFLOW_HOME

2) 가상환경 생성 & 접속

# 가상환경 생성
$ python3 -m venv venv-airflow

# 가상환경 실행
$ source venv-airflow/bin/activate

4) docker-compose.yaml 를 다운로드

방법이 2개가 있습니다.
1. apache
2. bitnami
저자는 후자를 택했습니다. 선호하는 방식을 선택하여 사용하시면 됩니다.

이유 : bitnami에서 제공하는 Airflow 사용하였습니다.
Docker 이미지를 사용하여 편리하게 사용 가능
bitnami는 Apache에서 제공하는 프로젝트들을 실사용에 적합하도록 리패키징해서 배포함.

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

// 2. 아래 내용으로 docker-compose.yaml 파일 생성  
version: '2'
 
services:
  jupyter:
    image: 'jupyter/base-notebook:latest'
    volumes:
        - ./dags:$AIRFLOW_HOME/dags
    ports:
        - "8888:8888"
    command: "start-notebook.sh \
              --NotebookApp.password='sha1:b70a055565b1:854e3f96f91c51cc0c91da371ea5dfbf7c1a61a1' \ 
              --sudo mkdir $AIRFLOW_HOME/dags"
  postgresql:
    image: 'docker.io/bitnami/postgresql:10-debian-10'
    volumes:
      - 'postgresql_data:/bitnami/postgresql'
    environment:
      - POSTGRESQL_DATABASE=bitnami_airflow
      - POSTGRESQL_USERNAME=bn_airflow
      - POSTGRESQL_PASSWORD=bitnami1
      - ALLOW_EMPTY_PASSWORD=yes
  redis:
    image: docker.io/bitnami/redis:6.0-debian-10
    volumes:
      - 'redis_data:/bitnami'
    environment:
      - ALLOW_EMPTY_PASSWORD=yes
  airflow-scheduler:
    image: docker.io/bitnami/airflow-scheduler:2-debian-10
    environment:
      - AIRFLOW_DATABASE_NAME=bitnami_airflow
      - AIRFLOW_DATABASE_USERNAME=bn_airflow
      - AIRFLOW_DATABASE_PASSWORD=bitnami1
      - AIRFLOW_EXECUTOR=CeleryExecutor
      - AIRFLOW_LOAD_EXAMPLES=no
      - AIRFLOW__CORE__LOAD_DEFAULT_CONNECTIONS=false
      - AIRFLOW__WEBSERVER__DEFAULT_UI_TIMEZONE=Asia/Seoul
      - AIRFLOW__CORE__DEFAULT_TIMEZONE=Asia/Seoul
      - AIRFLOW_WEBSERVER_HOST=airflow
    volumes:
      - ./dags:/opt/bitnami/airflow/dags
 
  airflow-worker:
    image: docker.io/bitnami/airflow-worker:2-debian-10
    environment:
      - AIRFLOW_DATABASE_NAME=bitnami_airflow
      - AIRFLOW_DATABASE_USERNAME=bn_airflow
      - AIRFLOW_DATABASE_PASSWORD=bitnami1
      - AIRFLOW_EXECUTOR=CeleryExecutor
      - AIRFLOW_LOAD_EXAMPLES=no
      - AIRFLOW__CORE__LOAD_DEFAULT_CONNECTIONS=false
      - AIRFLOW__WEBSERVER__DEFAULT_UI_TIMEZONE=Asia/Seoul
      - AIRFLOW__CORE__DEFAULT_TIMEZONE=Asia/Seoul
      - AIRFLOW_WEBSERVER_HOST=airflow
    volumes:
      - ./dags:/opt/bitnami/airflow/dags
    
  airflow:
    image: docker.io/bitnami/airflow:2-debian-10
    environment:
      - AIRFLOW_DATABASE_NAME=bitnami_airflow
      - AIRFLOW_DATABASE_USERNAME=bn_airflow
      - AIRFLOW_DATABASE_PASSWORD=bitnami1
      - AIRFLOW_EXECUTOR=CeleryExecutor
      - AIRFLOW_LOAD_EXAMPLES=no
      - AIRFLOW__CORE__LOAD_DEFAULT_CONNECTIONS=false
      - AIRFLOW__WEBSERVER__DEFAULT_UI_TIMEZONE=Asia/Seoul
      - AIRFLOW__CORE__DEFAULT_TIMEZONE=Asia/Seoul
    ports:
      - '8080:8080'
    volumes:
      - ./dags:/opt/bitnami/airflow/dags
volumes:
  postgresql_data:
    driver: local
  redis_data:
    driver: local

5) Airflow user setting

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

6) Running Airflow

docker-compose -f docker-compose.yml up -d # -d는 백그라운드 실행을 의미

# 잘 실행되었는지 확인
docker ps

7) 접속하기

  • Airflow : localhost:8080 (user/bitnami)
  • Jupyternotebook : localhost:8888 (1234)
profile
데이터를 가치있게 다루고 싶은 개발자 🐥

0개의 댓글