Data Engineering/AIRFLOW

[AIRFLOW] Airflow 기본개념, 설치 및 실행

qqprty 2024. 7. 22. 12:28

AIRFLOW?

Apache Airflow는 데이터 파이프라인을 작성, 스케줄링 및 모니터링하기 위한 플랫폼이다. 복잡한 데이터 처리 작업을 워크플로우로 정의하고 관리할 수 있도록 도와준다.

 

주요 기능은 다음과 같다

  1. 워크플로우 정의: 워크플로우를 DAG(Directed Acyclic Graph) 형식으로 정의. DAG는 작업(task)들의 모음이며, 각 작업의 의존 관계를 나타낸다.
  2. 스케줄링: DAG 및 각 작업을 특정 시간 또는 주기로 실행하도록 스케줄링할 수 있다.
  3. 모니터링 및 관리: 웹 인터페이스를 통해 실행 중인 워크플로우를 모니터링하고, 로그를 확인하며, 작업의 상태를 파악할 수 있다.
  4. 확장성: 분산 실행을 지원하여 많은 양의 작업을 처리할 수 있다.
  5. 유연성: Python 코드로 워크플로우를 정의하기 때문에 복잡한 로직을 쉽게 구현할 수 있다.

주로 데이터 엔지니어링, ETL(Extract, Transform, Load) 작업, 데이터 분석 파이프라인 등에 사용되며, 데이터의 수집, 처리, 분석 과정을 자동화하고 최적화하는 데 유용하다.

 

+) 용어정리

 

  • 워크플로우(Workflow): 여러 단계의 작업(task)이 순차적으로 또는 병렬로 실행되는 프로세스.
  • DAG(Directed Acyclic Graph): 워크플로우를 정의하는 구조. DAG는 방향성이 있는 비순환 그래프이며, 노드는 작업(task)을, 엣지(연결선)는 작업 간의 의존 관계를 나타낸다. DAG는 Python 코드로 정의된다.

 

기초 모듈 설치 및 환경 세팅, 실행

#가상환경 생성
pyenv virtualenv 3.11.9 air

#가상환경 실행
pyenv activate
#pyenv global air

#.zshrc 
export AIRFLOW_HOME=~/airflow
alias airs="airflow standalone"
AIRFLOW_VERSION=2.9.3

# Extract the version of Python you have installed. If you're currently using a Python version that is not supported by Airflow, you may want to set this manually.
# See above for supported versions.
PYTHON_VERSION="$(python -c 'import sys; print(f"{sys.version_info.major}.{sys.version_info.minor}")')"

CONSTRAINT_URL="https://raw.githubusercontent.com/apache/airflow/constraints-${AIRFLOW_VERSION}/constraints-${PYTHON_VERSION}.txt"
# For example this would install 2.9.3 with python 3.8: https://raw.githubusercontent.com/apache/airflow/constraints-2.9.3/constraints-3.8.txt

pip install "apache-airflow==${AIRFLOW_VERSION}" --constraint "${CONSTRAINT_URL}"
#프로세스 죽이기
ps -ef | grep airflow
kill xxxxx