Airflow

우주먼지·2023년 7월 5일
0

Mote

목록 보기
15/15
💡 AirBnB에서 만든 workflow management tool

worflow(작업)을 관리, 스케쥴링, 모니터링, 파이프 관리를 하는 역활을 한다.

airflow는 크게 4개의 구성요소로 이루어져 있다.(task = program)

  1. Airflow Webserver

    • UI담당. airflow에 대한 모든것을 시각적으로 보여주는 역할. airflow 로그, 스케쥴러에 의해 생성된 DAG목록, Task 상태 등을 시각화.
  2. Airflow Scheduler

    • 말 그대로 스케쥴링 해주는 역할. airflow가 할당한 work들을 스케쥴링 해준다. DAG들의 실행 조건과 여부를 확인하고 executor에게 task를 제공하는 역할
  3. Airflow Worker

    • 실제 task를 실행하는 주체자
  4. Airflow Database

    • airflow에 있는 DAG, task등과 생성되는 모든 메타 데이터를 저장하고 관리.
  5. DAG(Directed Acyclic Graph)

    • 각 Task들의 관계와 종속성등을 비순환 그래프로 나타낸 것. Task의 실행 순서를 나타낸다.

Airflow 설치 및 실행

  1. 경로 및 환경 변수 설정

    공식문서에서도 기본 경로를 ~/airflow로 권장하고 있다.

    여기서 airflow 버전과 python버전이 무엇인지 셋팅을 먼저 해준다.

    export AIRFLOW_HOME=~/airflow
    AIRFLOW_VERSION=2.2.3
    PYTHON_VERSION="$(python --version | cut -d " " -f 2 | cut -d "." -f 1-2)"
    
    CONSTRAINT_URL="https://raw.githubusercontent.com/apache/airflow/constraints-${AIRFLOW_VERSION}/constraints-${PYTHON_VERSION}.txt"
    pip install "apache-airflow=${AIRFLOW_VERSION}" --constraint "${COPNSTRAINT_URL}"
  1. Airflow 실행 전 셋팅

    가장 먼저 DB 초기화가 필요. 그 다음 이 DB를 관리할 사용자 계정을 하나 만들어 준다.

    airflow db init
    
    airflow users create --username admin --firstname gy --lastname kim --role Admin --email gykim@intellius.ai

    DB를 초기화를 하고 나면 아래와 같은 airflow파일이 생성된다.

    .
    ├── Hatespeech
    ├── airflow.cfg
    ├── airflow.db
    ├── dags
    
    ├── logs
    
    │   └── scheduler
    │       ├── 2023-01-31
    │       └── latest -> /Users/gimgayoung/airflow/logs/scheduler/2023-01-31
    └── webserver_config.py

    airflow.cfg : 환경설정 파일

    airflow.db : DB에 관련된 정보를 저장

    logs : 각종 로그를 관리하는 폴더

    dags : dag를 관리하는 폴더(dag 파이썬 파일을 여기로)

  1. Webserver 실행
    • webserver를 실행해서 ui를 web에서 확인 할 수 있다.
airflow webserver --port 8080

실행해서 해당 url로 들어가면 위와 같은 로그인창이 뜬다. 아까 입력한 user 정보를 입력하고 들어가면 아래와 같이 나온다.

  1. Task 실행(DAG 등록)
    • dags 폴더에 파일을 생성하면 DAG 등록이 된다. airflow는 python 기반으로 작성되기 때문에 확장자가 .py여야 한다.
    • 등록 후 스케쥴러에게 전달하기 위해서 아래와 같이 console에 입력.
airflow scheduler

위와 같이 스케쥴러를 실행하면 ui에 dag가 입력된 걸 볼 수 있다.

등록된 dag를 그래프로 볼 수 있으며 실행에 결과와 과정 또한 ui로 확인 가능.

profile
안녕하세요 ㅎㅎ

0개의 댓글