공부/소소한 개발

Apache Airflow

무는빼주세요 2022. 5. 5. 16:12
Apache Airflow : 워크플로우 스케쥴링, 모니터링 툴
기존 방식의 문제점
  • 실패 복구 - 언제 어떻게 다시 실행할 것인가
  • 모니터링 - 잘 돌아가고 있는지 확인하기 힘들다
  • 의존성 관리 - 데이터 파이프라인간 의존성이 있는 경우 상위 데이터 파이프라인이 잘 돌아가고 있는지 확인이 어려움
  • 확장성 - 중앙화 관리하는 툴이 없기 때문에 분산된 환경에서 파이프라인들을 관리하기 힘들다
  • 배포 - 새로운 워크플로우를 배포하기 힘들다.
Airflow는 워크플로우를 작성하고 스케줄링, 모니터링 하는 작업을 프로그래밍할 수 있게 해주는 플랫폼
  • 파이썬으로 쉬운 프로그래밍 가능
  • 분산된 환경에서 확장성이 있음
  • 웹 대시보드(UI)
  • 커스터마이징 가능
워크플로우 : 의존성으로 연결된 작업들의 집합
구성요소
  • 웹서버 - 웹 대시보드 UI
  • 스케줄러 - 워크플로우가 언제 실행되는지 관리
  • Metastore - 메타데이터 관리
  • Executor - 테스크가 어떻게 실행되는지 정의
  • Worker - 데스크를 실행하는 프로세스

https://airflow.apache.org/docs/apache-airflow/stable/concepts/overview.html

 

 

 

DAG : Directed Acyclic Graph (의존성으로 연결된 것) 방향이 있는 순환이 없는 그래프
Operator : 작업을 정의하는데 사용
Action Operator : 실제 연산을 수행
Transfer Operator : 데이터를 옮김
Sensor Operator : 테스크를 언제 실행시킬 트리거를 기다림
작업(Task) = Operator Instance
 
One Node Architecture : 하나의 서버에 실행되는 구조

Multi Node Architecture : 다중 서버에 실행되는 구조

구조
  • DAG를 작성하여 Workflow를 만든다. DAG는 Task로 구성되어 있다.
  • Task는 Operator가 인스턴스화 된 것
  • DAG를 실행시킬때 Scheduler는 DagRun 오브젝트를 만든다.
  • DagRun 오브젝트는 Task Instance를 만든다
  • Worker가 Task를 수행한 후 DagRun의 상태를 완료로 바꾼다

Airflow CLI (Comand Line Interface)
Airflow UI

https://airflow.apache.org/docs/apache-airflow/stable/concepts/overview.html

스케쥴 = 주기(크론탭 형식)
Runs = 상태
Gantt Chart: 각각의 task가 실행하며 걸린 시간을 확인 가능

https://airflow.apache.org/docs/apache-airflow/stable/ui.html

 
내장 Operators
  1. BashOperator
  2. PythonOperator
  3. EmailOperator
Action Operator
  1. Actions Operator는 액션을 실행한다
  2. Transfer Operator는 데이터를 옮길 때 사용
  3. Sensors : 조건이 맞을 때 까지 기다린다