본문 바로가기
쪼랩 성장기/깡깡이 노트

Airflow 정리

by ssyeon 2023. 4. 3.

Airflow

데이터 엔지니어링을 효율적으로 수행할 수 있도록 도와주는 오픈소스 플랫폼

 

프로그래밍 방식으로 워크플로우를 작성, 예약 및 모니터링 

작업을 정확한 시간에, 정확한 방법으로 정확한 순서대로 실행하게 해준다. 

 

[ ex. 매일 밤 12시에 트리거 해야 하는 데이터 파이프라인이 존재  워크로드 중에 하나라도 문제가 생긴다면?? 관리해야 하는 파이프라인이 수백 개가 있다면?? => Airflow로 관리 가능! ] 

 




1. Airflow 동작방법

 

User interface / Web Server

: airflow는 설치 만으로 web server를 구성 할 수 있음

 

 

DAG Directory

: 작업 스케줄을 만들어주는 스케쥴링 단위를 작성한 DAG를 보관하는 장소 python 코드로 작성한 DAG들을 여기에 보관한다.

 

 

Worker

: 실제 Task를 실행하는 주체. Executor 종류에 따라 동작 방식이 다양하다.

 

 

Metadata Database

: 실행할 Task의 관한 정보를 저장해 놓는다. 순서나 작업 스케쥴링 등등 , task status(queued, scheduled, running, success, failed, etc)가 저장된다.

 

 

Scheduler

: DAG와 작업들을 모니터링하고 실행 순서와 상태 관리한다.

 

 

Executor

: 스케줄러와 함께 동작하는 구성요소. status가 queued인 태스크를 확인하며 실제 어떤 리소스가 투입되어 실행 될 것인지를 결정, Local Executor, Celery Executor, Kubernetes Executor 등이 있다



1. Dag를 작성하여 Workflow를 만든다 Dag는 Task로 구성되어 있다.

2. DAG를 실행 시킬 때 Scheduler는 DagRun 오브젝트를 만든다.

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

4. Worker가 Task를 수행 후 DagRun의 상태를 “완료”로 바꿔놓는다.

 

 

구동 순서

webserver 구동  -> folder DAGs 파일 받아와 보여줌

-> Scheduler에서 Folder DAGs를 보고 Metastore에 정보전달 DAGRun 생성

-> DagRun에 해당하는 Task Instance 생성 및 Executor에 전달

-> Task가 여러개이면 Metastor와 Task들의 처리 상태(진행, 건너뛰기, 완료 등)을 업데이트하면서 다음 내용 이전내용을 Execute 진행

-> 완료 되면 DagRun에 완료 상태 보내고 Scheduler에 완료 상태 업데이트 알려주어 끝냄

 

출처 : https://magpienote.tistory.com/192

 

 


2. Dag

 

airflow에서 실행할 작업들을 순서에 맞게 구성한 워크플로우(WorkFlow)를 의미

Directed Acyclic Graph의 약자, dag를 구성하는 각 작업들을 태스크 (Task)라고 한다. 

 

작업 내부에서 발생하는 일에 대해서 신경쓰지 않고 각 태스크가 적절한 시점에, 올바른 순서로 실행되거나 올바른 문제 처리를 통해 실행되도록 한다. 

 

다음 기능을 수행할 수 있다

  • 수집을 위한 데이터 준비
  • API 모니터링
  • 이메일 보내기
  • 파이프라인 실행



💧workflow

작업의 흐름

 

💧operator

가장 작은 단위

dag가 작동하는 동안 workflow를 어떻게 작동할지 묘사하는 것

 

operator이 모여 task가 되고 task가 모여서 dag가 된다.  dag가 모이면 workflow가 된다.

 task < dag < workflow

 

 

 

💧Task 배열

정의한 Tack들의 실행 순서를 정의하는 과정이다. 

set_downstream (정방향), set_upstream (반대 방향) 함수를 사용할 수 있다. 일반적으로 >>, << 연산자를 사용하고 Airflow 1.8버전부터 사용한다. 



단순한 작업의 경우 task1 >> task2 >> task3

 

다음의 경우에는 task1 >> [task2, task3] >> task4 로 정의한다

 

출처

[1] https://airflow.apache.org/docs/apache-airflow/stable/core-concepts/dags.html#dags

[2] https://www.bearpooh.com/151

 

 

 

 

3. Airflow Lifecycle

 

 

💧Scheduler heartbeat 

Airflow 스케줄러가 건강한 하트비트를 제공하는 시간(즉, 응답하는 시간)을 보여주는 타임라인

Airflow 스케줄러 문제를 식별하기 위해 빨간색 영역을 확인

 

 

 

 

 

반응형

'쪼랩 성장기 > 깡깡이 노트' 카테고리의 다른 글

ssh 연결하기 (Putty / MobaXterm 연결)  (0) 2023.04.26
Dataproc  (0) 2023.03.30
HAR  (0) 2023.02.23
아카이브 파일  (0) 2023.02.23

댓글