공부/소소한 개발
Apache Airflow
무는빼주세요
2022. 5. 5. 16:12
Apache Airflow : 워크플로우 스케쥴링, 모니터링 툴
기존 방식의 문제점
-
실패 복구 - 언제 어떻게 다시 실행할 것인가
-
모니터링 - 잘 돌아가고 있는지 확인하기 힘들다
-
의존성 관리 - 데이터 파이프라인간 의존성이 있는 경우 상위 데이터 파이프라인이 잘 돌아가고 있는지 확인이 어려움
-
확장성 - 중앙화 관리하는 툴이 없기 때문에 분산된 환경에서 파이프라인들을 관리하기 힘들다
-
배포 - 새로운 워크플로우를 배포하기 힘들다.
Airflow는 워크플로우를 작성하고 스케줄링, 모니터링 하는 작업을 프로그래밍할 수 있게 해주는 플랫폼
-
파이썬으로 쉬운 프로그래밍 가능
-
분산된 환경에서 확장성이 있음
-
웹 대시보드(UI)
-
커스터마이징 가능
워크플로우 : 의존성으로 연결된 작업들의 집합
구성요소
-
웹서버 - 웹 대시보드 UI
-
스케줄러 - 워크플로우가 언제 실행되는지 관리
-
Metastore - 메타데이터 관리
-
Executor - 테스크가 어떻게 실행되는지 정의
-
Worker - 데스크를 실행하는 프로세스
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)
https://airflow.apache.org/docs/apache-airflow/stable/usage-cli.html
Using the Command Line Interface — Airflow Documentation
airflow.apache.org
Airflow UI
스케쥴 = 주기(크론탭 형식)
Runs = 상태
Gantt Chart: 각각의 task가 실행하며 걸린 시간을 확인 가능
내장 Operators
-
BashOperator
-
PythonOperator
-
EmailOperator
Action Operator
-
Actions Operator는 액션을 실행한다
-
Transfer Operator는 데이터를 옮길 때 사용
-
Sensors : 조건이 맞을 때 까지 기다린다