본문 바로가기
데이터엔지니어링/Airflow

데이터 파이프라인(ETL/ELT) 과 AirFlow DAG의 구조 및 개념

by goemgoem-i 2024. 11. 18.
반응형

이번에는 데이터파이프라인(ETL/ELT)을 알아보고 Airflow를 적용하는 방법에 대해 알아볼 거다 

데이터 레이크와 웨어하웃 ETL과 ELT에 대한 개념은 아래 링크 참고

 

 

 

 

데이터 흐름과정 

사진출처: 굄굄이

서비스에서 생기는 직접 데이터 & 써드파티에서 생기는 간접 데이터 => 데이터 적제 (ETL) 

=> 데이터 인프라( 전용 데이터 모음집 = 데이터웨어하우스) => 데이터 분석 => 데이터 과학 적용(경험 개선)

 

 외부에 있는 데이터를 코드로 작성해서 데이터 웨어하우스로 가져오는 작업 -> 대표적인 프레임워크가 AIRFLOW

Airflow에선 데이터 적제를 DAG라고 말함 

 

 

 

 

데이터웨어하우스의 구성

 

사진출처: 굄굄이

데이터 소스(mysql emd) => ETL 적용(데이엔지니어링 하는 일) => 데이터웨어하우스에 담기 => 좀 더 정제된 데이터를 얻기 위해 ELT(요약테이블) 진행   => 대시보드(superset, docker, 테블로 등 )

ETL(Extract Transfrom and Load) : 데이터 추출 & 변환 & 로드
S3 CSV 파일 => Redshift 에 있는 데이블로 로드 
ELT(Extract Load and Transfrom) 데이터 로드 후 변환 (ETL에서 더 자세한 내용 또는 편리하게 사용하도록 추가작업)

 

 

 

데이터 파이프라인

사진출처: 굄굄이



데이터 웨어하우스에 분석 가능한 고품질 데이터를 제공 ( 목적지 : 데이터 웨어하우스)

파이썬 또는 스칼라 또는 SQL로 진행 

 

종류 : Raw data jobs / Summary report jobs / Producion Data jobs

 

 

 

 

 

Apache AirFlow

 

- 파이썬으로 작성된 ET 프레임 워크

- DAG (Directed Acyclic Graph) = 데이터 파이프라

 - 2.5.1 버전 사용하는 것이 가장 안정적임 

사진출처: 굄굄이

 

 

 

 

1) DAG (Directed Acyclic Graph) : 작업간의 의존성을 정의 ( 데이터 파이프라인 파이썬 코드 )'

주기적으로 Metadata Database 데이터 저장 

Task로 구성 : 일렬로 운영되는 것과 병렬 운영되는 것 (순환하지 않는다)

 

2) Task : DAG 내에서 실행되는 개별 작업 / operator와 sensor로 구

  • Operator: 특정 작업 유형을 정의 (예: BashOperator, PythonOperator, SQLOperator).
  • Sensor: 특정 조건이 충족될 때까지 대기 (예: 파일이 생성될 때까지).

3) Scheduler : DAG에서 정의된 스케줄에 따라 작업 실행을 관리

 

4) Executor : 작업 실행 방식을 정의하는 컴포넌트(단일 서버에서는 사용 안함)

 

  • Local Executor: 단일 머신에서 실행.
  • Celery Executor: 분산 환경에서 작업 실행.
  • Kubernetes Executor: 쿠버네티스 클러스터에서 실행.

5) Metadata Database : 작업 실행 상태, DAG 정의 등을 저장

 

 

6) Web Server : UI(시각화 제공)를 제공하여 DAG 및 작업 상태를 모니터링하고 관리

 

7) Worker : 실행 엔진에서 작업을 실제로 수행하는 컴포넌트 (DAG수행)

 

 


이렇게 된다고 하는데 

사실 잘 이해가 안가서 유튜브에 추가로 찾아보니

"슬기로운통계생활"님이 그림으로 아주 잘 설명해주신다

https://www.youtube.com/watch?v=hN3PP5a2kqI

 

출처 : 슬기로운통계생활

 

스케줄러가 머리역할 :

1. dag파일 읽기고 분석(파싱) 

2. 파싱에서 문제가 없으면 그 정보를 메타db에 저장 ( 주기 및 다음에 실행할 시간 등등)

3. dag에서 실행시간이 오면 실행시키는데 스케줄러가 직접하는게 아니라 워커한테 시킴

( 스케줄러와 워커 사이에 큐있음)

 

 

워커의 역할 두가지

스케줄러가 시킨 dag파일을 찾고 처리가 되기 전 후에 한번씩 메타db에 업데이트 진행함

실제 task는 워커가 처리함

 

반응형