Ssoon

Airflow 본문

MLOps

Airflow

구구달스 2024. 6. 21. 01:27
  • 데이터 파이프라인(workflows)을 작성, 예약, 모니터링하기 위한 오픈소스 플랫폼입니다.
  • 데이터 파이프라인은 데이터를 이동하고 변환하는 과정으로, 복잡한 데이터 처리 작업을 자동화하는 데 사용됩니다.
  • Airflow는 이를 코드로 정의하여 유연하고 확장 가능한 워크플로우 관리 시스템을 제공합니다.
    https://learnwithaakash.com/2023/06/26/a-beginner-guide-to-airflow-components/

🧿 주요 개념

1. DAG (Directed Acyclic Graph)

  • 정의: DAG는 데이터 파이프라인의 청사진입니다. 작업(task)들의 모음으로, 각 작업이 어떻게 순서대로 실행될지를 정의합니다.
  • 특징: 유향 비순환 그래프(사이클이 없음) 구조를 가지고 있습니다.
  • 예시: 예를 들어, 데이터 추출 → 데이터 변환 → 데이터 로드 작업 순서로 구성된 파이프라인.

2. Task

  • 정의: DAG 안의 각 개별 작업을 Task라고 합니다.
  • 종류: 주로 Python Operator, Bash Operator, SQL Operator 등이 있습니다.
  • 역할: 특정 작업을 수행합니다. 예를 들어, 데이터를 특정 위치에서 가져오는 작업, 데이터를 처리하는 작업 등.

3. Operator

  • 정의: Task를 정의하는 클래스입니다. 다양한 작업을 수행하기 위한 미리 정의된 작업 템플릿입니다.
  • 예시:
    • PythonOperator: 파이썬 함수를 실행합니다.
    • BashOperator: Bash 명령어를 실행합니다.
    • Sensor: 특정 조건이 충족될 때까지 기다립니다.

4. Scheduler

  • 정의: DAGs와 Tasks를 모니터링하고, 실행 시점을 스케줄링하는 역할을 합니다.
  • 역할: DAG가 정의한 스케줄에 따라 각 Task를 실행합니다. 예를 들어, 매일 자정에 데이터를 가져오는 작업을 실행합니다.

5. Executor

  • 정의: 실제로 Task를 실행하는 컴포넌트입니다.
  • 종류:
    • LocalExecutor: 로컬 환경에서 실행.
    • CeleryExecutor: 분산 환경에서 실행.
    • KubernetesExecutor: 쿠버네티스 환경에서 실행.

6. Web Server

  • 정의: Airflow의 사용자 인터페이스(UI)를 제공하는 웹 서버입니다.
  • 역할: DAGs를 모니터링하고, 각 Task의 상태를 확인하며, DAG 실행을 트리거하거나 중지할 수 있습니다.

7. Metadata Database

  • 정의: Airflow의 메타데이터를 저장하는 데이터베이스입니다.
  • 역할: DAG 정의, Task 상태, 로그 등 Airflow의 모든 메타데이터를 저장합니다.
  • 예시: 주로 MySQL, PostgreSQL 등의 데이터베이스를 사용합니다.

 

🧿 Airflow의 주요 기능

  1. 스케줄링 및 실행
    • Airflow는 DAG를 정의된 일정에 따라 자동으로 실행할 수 있습니다. 예를 들어, 매일 자정에 실행되도록 스케줄링할 수 있습니다.
  2. 모니터링 및 로깅
    • Airflow는 웹 인터페이스를 통해 DAG와 Task의 실행 상태를 모니터링하고, 상세한 로그를 제공하여 디버깅을 용이하게 합니다.
  3. 확장성
    • Airflow는 작업을 병렬로 실행할 수 있으며, 클러스터 환경에서 확장할 수 있습니다. Celery, Kubernetes 등 다양한 실행 엔진을 지원하여 대규모 작업을 효과적으로 처리합니다.
  4. 유연한 파이프라인 정의
    • Airflow는 파이프라인을 Python 코드로 정의하므로, 복잡한 로직과 조건을 유연하게 처리할 수 있습니다. Python의 장점을 활용하여 파이프라인을 동적으로 생성하거나 수정할 수 있습니다.

🧿 Airflow의 활용 사례

  • ETL 파이프라인
    • 데이터를 추출(Extract), 변환(Transform), 적재(Load)하는 작업을 자동화합니다. 예를 들어, 매일 데이터를 수집하여 데이터 웨어하우스에 적재하는 작업을 관리합니다.
  • 데이터 과학 워크플로우
    • 데이터 전처리, 모델 학습, 모델 평가 등 데이터 과학 프로젝트의 전체 워크플로우를 관리합니다.
  • 데이터 통합
    • 여러 데이터 소스에서 데이터를 수집하고 통합하는 작업을 자동화합니다.
  • 리포팅 및 알림
    • 정기적으로 리포트를 생성하고 이메일이나 다른 알림 채널을 통해 결과를 전달합니다.

Apache Airflow는 이와 같은 복잡한 데이터 파이프라인을 효율적으로 관리할 수 있는 강력한 도구입니다. Python 기반의 유연한 정의 방식과 강력한 모니터링 기능을 통해 다양한 데이터 처리 요구를 충족할 수 있습니다.


 

Chart 설치하기

🧿 Helm 리포지토리 추가

  • helm repo add: 새로운 Helm 차트 리포지토리를 추가하는 명령어입니다.
  • apache-airflow: 이 리포지토리에 대한 별칭입니다. 나중에 이 별칭을 사용하여 리포지토리를 참조할 수 있습니다.
  • https://airflow.apache.org: 추가하려는 리포지토리의 URL입니다. 이 경우 Apache Airflow의 공식 Helm 차트 리포지토리 URL입니다.

🧿 Airflow를 배포

 

  • helm upgrade --install: upgrade와 install 명령어를 결합한 것입니다.
    • upgrade: 이미 설치된 릴리스를 업그레이드합니다.
    • install: 지정된 릴리스 이름이 설치되어 있지 않으면 새로운 설치를 수행합니다.
    • 릴리스가 이미 존재하면 업그레이드하고, 존재하지 않으면 새로 설치합니다.
  • airflow: 릴리스 이름입니다. 이 이름으로 해당 릴리스를 참조할 수 있습니다.
  • apache-airflow/airflow: 설치하거나 업그레이드할 차트의 이름입니다. 여기서 apache-airflow는 리포지토리 이름이고, airflow는 차트 이름입니다. 즉, 이전에 추가한 apache-airflow 리포지토리에서 airflow 차트를 사용합니다.
  • --namespace airflow: 이 명령어는 차트를 설치할 Kubernetes 네임스페이스를 지정합니다. 여기서는 airflow 네임스페이스를 사용합니다.
  • --create-namespace: 이 플래그는 지정된 네임스페이스가 존재하지 않을 경우, 네임스페이스를 자동으로 생성합니다. airflow 네임스페이스가 없으면 이 명령어가 실행될 때 자동으로 생성됩니다.

🧿 Pod 상태 확인

 

 

🧿 Airflow Webserver 실행 및 접속

 

  • 호스트 환경에서 편하게 접속하기 위해서 NodePort 로 변경

  • http://{Node IP}:31380/ 접속확인

'MLOps' 카테고리의 다른 글

KubeRay  (0) 2024.06.21
Kubeflow  (0) 2024.06.21
Comments