Apache Airflow 아파치 에어플로우
에어비엔비에서 개발한 워크플로우 스케쥴링, 모니터링 플랫폼
아파치 탑 레벨 프로젝트
에어비엔비, 야후, 페이팔, 인텔, 스프라이프 등 여러 회사들이 사용중이다.
대형 프로젝트들에서 겪고 있는 공통적인 문제가 있고 이러한 문제를 아파치 에어플로우가 해결해 줄 수 있다.
에어플로우를 사용하는 이유
한 두개의 파이프라인을 관리하는것은 스케쥴링, 모니터링이 어렵지 않다.
하지만 관리해야 하는 파이프라인이 수십개가 있다면?
파이프라인마다 의존성이 복잡한 경우라면?
에어플로우는 워크 플로우를 작성, 스케쥴링, 모니터링을 쉽게 할 수있게 해주는 플랫폼이기 때문에 사용 한다.
* 워크 플로우란 의존성으로 연결된 작업(task)의 집합 => DAG(Directed Acyclic Graph)
Crontab등 기존 스케쥴링, 모니터링 방식의 문제점
- 실패 복구 : 언제 어떤 시점에서 어디서 문제가 생겼는지 파악이 힘들고, backfill이 힘들다.
- 모니터링 : 수십개의 파이프라인을 실시간 확인이 힘들다.
- 의존성 관리 : 데이터 파이프라인간 의존성이 있는 경우 상위 데이터 파이프라인에 대한 관리(의존성 파악, 실행되고 있는지)가 어렵다.
- 확장성 : 중앙화 해서 관리하는 툴이 없기 때문에 분산된 환경에서 파이프라인들을 관리하기 힘들다.
- 배포 : 새로운 워크플로우를 배포하기 까다롭다.
에어플로우의 특징
- 확장성 :분산구조와 메시지큐를 이용해 다양한 워커간 협업이 가능하기 때문에 스케일아웃이 가능하다.
- 파이썬 : 에어플로우의 파이프라인은 파이썬 코드로 작성하기때문에 동적 파이프라인을 정의할 수 있다.
- 커스터마이징 : 자신의 환경에 맞게 operator를 정의 할 수 있고 라이브러리를 확장 할 수있다.
- Elegant : 우아한? 보다 간결하다. 에어플로우의 파이프라인 작성은 간결하며 명시적이다.
- 실시간 웹 대시보드 UI 제공된다.
에어플로우 구성 컴포넌트
- Web Server - UI를 제공하고 사용자가 스케줄 관리와 디버깅 가능
- Scheduler - 스케쥴을 관리하고, executor에게 작업 수행 요청
- Metastore - 스케쥴러나 Executor, 웹 서버에서 사용하는 메타데이터를 저장
- Executor - task가 어떻게 실행되는지 정의
- Worker - task가 실제로 실행되는 프로세스
에어플로우의 동작 방식
- DAG를 작성하여 Workflow를 만든다. DAG는 Task로 구성되어 있다.
- Task는 Operator가 인스턴스화 된 것
- DAG를 실행시킬 때 Scheduler는 DagRun 오브젝트를 만든다
- DagRun 오브젝트는 Task Object를 만든다.
- Worker가 Task를 수행 후 DagRun의 상태를 "완료"로 바꾼다.
* Operator : 작업을 정의하는데 사용
- Action Operator : 실제 연산 수행
- Transfer Operator : 데이터를 옮김
- Sensor Operator : 테스크를 언제 실행시킬 트리거를 기다림.
'Development > Data Engineering' 카테고리의 다른 글
[Docker] M1 맥 도커 confluentinc/cp-kafka 대체 이미지 (0) | 2022.04.28 |
---|---|
[Apache Spark] 아파치 스파크 RDD란? (0) | 2022.04.19 |
[Apache Spark] 스파크의 구조와 실행흐름 이해하기 (0) | 2022.03.30 |
분산처리의 문제점 (0) | 2022.03.23 |
[Apache Spark] 아파치 스파크 배경, 그리고 이해 (0) | 2022.03.22 |
댓글