이번 주의 주제는 ETL/Airflow 소개이다. 드디어 Airflow에 대해 본격적으로 배우는 시간을 갖는다. 그 전에 Airflow를 사용하는 이유라고 할 수 있는 ETL에 대해 맥스님의 경험을 토대로 알아보며 관련 용어들에 대해 설명을 해주셨다. 그리고 Airflow를 사용하며 모르고 사용했을 경우 치명적일 수도 있는 Backfill 방식에 대해 설명해 주셨다. 이번 포스팅에서는 세션에서 다룬 용어 및 Airflow에 대해 간략하게 다뤄보겠다.
데이터 파이프라인이란?
ETL: Extract, Transform, Load의 약자
Data Pipeline, Data Workflow, DAG 등의 용어와 호환할 수 있음
Data Source에서 원하는 데이터를 추출해서 원하는 포맷으로 변환 후 Data Destination에 적재
VS ELT - 데이터 저장후 필요한 포맷으로 변환
Data Lake vs Data Warehouse
Data Lake & ELT
정형 데이터와 비정형 데이터 등 다양한 데이터 포맷을 저장하는 저장소
저렴한 비용으로 데이터 보관주기의 제약없이 모든 히스토리성 데이터를 저장
데이터 웨어하우스에 비해 더 큰 규모의 저장소를 의미
ELT - 데이터를 프로세싱하는 아키텍처에 가까움
Source가 되는 데이터가 DW 또는 Data Lake에 있고, 가져와서 변환하여 어딘가로 저장
Data Warehouse
좀 더 정제되고 구조화된 데이터를 저장하며 보관 주기가 있음
일반적으로 BI Tool을 연결하여 사용됨
Airflow
Airflow 소개
Airflow는 파이썬 기반의 데이터 파이프라인 프레임워크
Apache Top Level Project
Python으로 데이터 파이프라인을 만들고 스케줄링하고 모니터링 함
Web UI로 데이터 파이프라인을 스케줄링하고 모니터링 할 수 있음
Airflow에서 데이터 파이프라인은 DAG(Directed Acyclic Graph)라고 명명함
Airflow는 클러스터링도 가능 함
하지만 클러스터링을 운영하는 것은 쉽지 않으므로 클라우드 버전을 사용하는 것을 추천함
Airflow 설치 시에 메타데이터 관리를 위해 DB가 필요
Default로 설정된 SQLite는 완전 비추 - 너무 느림
MySQL 또는 Postgres를 사용
Airflow의 구성
Web Server
Scheduler
DAG의 실행스케줄 관리 및 실행시작
Worker
실제로 DAG를 실행해주는 역할
Database (Default는 Sqlite)
메타데이터 관리
Queue (멀티노드 구성인 경우만)
이 경우 Executor가 달라짐 (CeleryExecutor, KubernetesExecutor)
start_date는 job을 처음 실행시키는 시간이 아닌 해당 날짜를 기준으로 실행하게 하는 날짜
4주차 소감
Airflow에 대해 본격적으로 배우기 시작하며 어렴풋이 알고 있었던 용어들도 함께 정리를 했다. 모르고 사용했을 경우 치명적일 수 있는 backfill에 대해 배우며 start_date와 execute_date의 개념을 배워서 실제 업무에서 유용하게 적용했다. 세션 마지막에는 맥스님이 미리 만든 Python 기반의 ETL 코드를 요구사항에 맞게 수정하는 과제와 EC2 인스턴스를 하나 제공받아 가이드에 따라 Airflow를 설치하는 과제가 주어졌다. 기존에는 CentOS OS로 Airflow를 설치해본 경험이 있으나 Ubuntu여서 살짝 어색했지만 큰 차이는 없었다. 다만, 기존에 설치되어있던 pytho3.6 버전과 과제로 설치하려는 Airflow의 호환성이 맞지 않아 Python을 다시 3.8버전으로 설치하고 Airflow를 설치했더니 문제없이 설치되었다. 이제 판을 깔았으니 다음 주차부터 좀 더 딥하게 배우며 사용하는 시간이 될것 같다.
댓글 영역