Airflow

[Airflow] Why Airflow?

Alex, Yoon 2022. 6. 11. 23:43

데이터 파이프라인 자동화

데이터의 수집, 가공, 적재 프로세스를 자동화 하는 것. 

대표적으로 리눅스의 crontab 등의 프로그램을 사용하여 '배치'화 할수있겠지만, 구동 실패시 재실행하는 과정에서 데이터의 규모나, 워크플로우의 규모가 커지게 된다면 점차 어려워짐. 

 

이런 문제점을 보완하기 위해 우리가 자주 사용(?)하는 서비스인 에어비엔비에서 수많은 프로세스를 관리하기 위한 솔루션으로 시작되었음. 

기존방식의 문제점

  1. 실패복구 - 언제 어떻게 다시 실행할 것인가? 
  2. 모니터링, 의존성 관리(파이프라인 간 의존성)
  3. 확장성 - 분산된 환경에서 파이프라인 관리. 

Airflow - 워크플로우 관리 도구 

워크플로우를 작성하고 스케줄링하고 모니터링하는 작업을 프로그래밍 할 수 있게 해주는 플랫폼

  • 태스크를 정기적인 스케줄로 실행하고, 결과 통지하기
  • 태스크 간의 의존 관계를 정하고, 정해진 순서대로 빠짐없이 실행하기
  • 태스크의 실행 결과를 보관하고, 오류 발생 시에는 재실행하기.

구성

  • 웹서버 - 웹 대시보드 UI
  • 스케줄러 - 워크플로우가 '언제' 실행되는지 관리 
  • 메타스토어 - 메타데이터 관리
  • Executor - 태스크가 어떻게 실행되는지 정의 
  • Worker - 태스크를 실행하는 프로세스 

자주 사용하는 용어 정리 

워크플로우

의존성으로 연결된 작업들의 집합 (DAGs)

재시도 

수작업을 통하지 않고 에러를 복구하는 방법. 

이상적으로는 재시도 없이 한번에 디버깅에 성공하는 것이 이상적. 

백필 (backfill) 

과거로 돌아가 일정기간의 플로우를 연속해서 실행하는 구조. 

1. 새롭게 만든 워크플로우를 과거로 돌어가 실행

2. 태스크 실패가 계속된 후에 이를 모두 모아서 재실행. 

Operatror 

작업(Task)를 정의하는데 사용. 

Action Operators : 실제 연산을 수행

Transfer Operators : 데이터를 옮김

Sensor Operators : 태스크를 언제 실행시킬지 트리거를 기다리는 역할 

 

Operator 를 실행시키면 Task가 된다. 

즉, Task = Operator Instance

태스크 큐  - 작업의 효율성을 위한  Queue 활용. 

1. DAG를 작성하여 Workflow를 만든다. DAGTask로 구성되어 있다.

2. TaskOperator가 인스턴스화 된 것.

3. DAG를 실행시킬때 SchedulerDagRun 오브젝트를 만든다

4. DagRun 오브젝트는 Task Instance를 만든다

5. WorkerTask 를 수행 후 DagRun 의 상태를 완료로 바꿔놓는다

반응형