이번에는 데이터파이프라인(ETL/ELT)을 알아보고 Airflow를 적용하는 방법에 대해 알아볼 거다
데이터 레이크와 웨어하웃 ETL과 ELT에 대한 개념은 아래 링크 참고
데이터 흐름과정
서비스에서 생기는 직접 데이터 & 써드파티에서 생기는 간접 데이터 => 데이터 적제 (ETL)
=> 데이터 인프라( 전용 데이터 모음집 = 데이터웨어하우스) => 데이터 분석 => 데이터 과학 적용(경험 개선)
외부에 있는 데이터를 코드로 작성해서 데이터 웨어하우스로 가져오는 작업 -> 대표적인 프레임워크가 AIRFLOW
Airflow에선 데이터 적제를 DAG라고 말함
데이터웨어하우스의 구성
데이터 소스(mysql emd) => ETL 적용(데이엔지니어링 하는 일) => 데이터웨어하우스에 담기 => 좀 더 정제된 데이터를 얻기 위해 ELT(요약테이블) 진행 => 대시보드(superset, docker, 테블로 등 )
데이터 파이프라인
데이터 웨어하우스에 분석 가능한 고품질 데이터를 제공 ( 목적지 : 데이터 웨어하우스)
파이썬 또는 스칼라 또는 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는 워커가 처리함
'데이터엔지니어링 > Airflow' 카테고리의 다른 글
gcp 코드 4003에러 해결 : Cloud Identity-Aware Proxy를 통한 연결 실패 VM에 IP 범위 35.235.240.0/20, 포트 22에서 오는 TCP 인그레스 트래픽을 허용하는 방화벽 규칙 (0) | 2024.11.23 |
---|---|
트랜잭션과 aws ec2에 docker 설치 윈도우 버전 (1) | 2024.11.23 |
키움 open api에서 데이터 가지고 오기 (3) | 2024.11.22 |
docker 설치 후 airflow 설치하기 윈도우 (1) | 2024.11.21 |
airflow ec2로 설치 터미널 가상환경 열어서 설치 / sudo의 사용이유 (1) | 2024.11.19 |