[5/6] TIL - 데이터 웨어하우스, 데이터 레이크, ETL, Airflow, 다양한 DW 옵션

Sangwon Jwa·2024년 5월 6일

데브코스 TIL

목록 보기
26/54
post-thumbnail

📖 학습 주제


  1. 데이터 웨어하우스
  2. ETL
  3. 데이터 레이크
  4. Airflow
  5. 데이터 웨어하우스 옵션

✏️ 주요 메모 사항 소개


데이터 웨어하우스

데이터 조직의 비전은 신뢰할 수 있는 데이터를 바탕으로 부가 가치를 생성하는 것이다. 고품질 데이터를 기반으로 의사 결졍권자에게 입력을 제공하여 사용자 서비스 경험을 개선하거나 프로세스를 최적화하는데 의의가 있다. 데이터 엔지니어는 데이터 분석에서 사용할 수 있는 데이터 웨어하우스와 같은 데이터 인프라를 구축하는 역할을 갖는다.

  • 데이터 웨어하우스란 회사에 필요한 모든 데이터를 모아놓은 중앙 데이터베이스로 실제 서비스에 사용하는 프로덕션용 데이터베이스와 별개의 데이터베이스로 만들어야 한다. 데이터의 크기에 맞게 어떤 데이터베이스를 사용할 지 선택하고, 만약 크기가 커진다면 다음 중 하나를 고려해볼 수 있다.
  1. AWS Redshift, 구글 클라우드의 Big Query
  2. Snowflake
  3. 오픈 소스 기반의 하둡(Hive/Presto)/Spark

ETL(Extract, Transform, Load)

다른 곳에 존재하는 데이터를 가져다가 데이터 웨어하우스에 로드하는 작업. 이 일련의 작업을 데이터 파이프라인이라고 부르기도 함

  • Extract : 외부 데이터 소스에서 데이터를 추출
  • Transform : 데이터의 포맷을 원하는 형태로 변환
  • Load : 변환된 데이터를 최종적으로 데이터 웨어하우스로 적재

관련하여 가장 많이 사용하는 프레임워크는 Airflow이다. Airflow는 오픈소스 프로젝트로 Python3 기반이며 AWS와 구글 클라우드에서도 지원한다.
ETL 관련 SaaS(Software as a Service)도 출현으로 흔한 데이터 소스의 경우 FiveTran, Stitch Data와 같은 SaaS를 사용하는 것도 가능하다.


데이터 레이크

구조화 데이터 + 비구조화 데이터 (로그파일), 보존 기한이 없는 모든 데이터를 원래 형태대로 보존하는 스토리지에 가까움. 보통은 데이터 웨어하우스보다 몇배는 더 크고 더 경제적인 스토리지로, 보통 클라우드 스토리지가 됨. (AWS의 S3가 대표적인 Data Lake) 데이터 레이크가 있는 환경에서 ETL과 ELT 란

  • ETL : DW, DL 바깥에서 안으로 데이터를 가져오는 것
  • ELT : DW, DL 안에 있는 데이터를 처리하는 것


Airflow

ETL 관리 및 운영 프레임워크의 필요성이 커지면서 ETL 스케줄러라는 것이 등장했다. 다수의 ETL이 존재할 경우 이를 스케줄해주고 이들관의 의존관계(dependency)를 정의해주는 기능을 수행하고, 특정 ETL이 실패할 경우 이에 관한 에러 메시지를 받고 재실행해주는 기능도 중요해졌다. (Backfill)

현재 가장 많이 사용되는 프레임워크는 Airflow이다. Python3 기반의 오픈 소스 프로젝트로 많은 회사에서 사용 중이다. AWS, 구글 클라우드, Azure에서도 지원을 하고 있다.

Airflow에서는 ETL을 DAG라 부르며 웹 인터페이스를 통한 관리 기능을 제공한다. 크게 스케줄러, 웹서버, 워커(Worker) 3가지 컴포넌트로 구성된다.

이런 툴을 이용하여 데이터 웨어하우스를 구성한다면 다음과 같은 예를 들 수 있다.

데이터 레이크를 포함한 데이터 플랫폼이라면 다음과 같다


DW 옵션

AWS Redshift

❖ 2012년에 시작된 AWS 기반의 데이터웨어하우스로 PB 스케일 데이터 분산 처리 가능

  • Postgresql과 호환되는 SQL로 처리 가능하게 해줌
  • Python UDF (User Defined Function)의 작성을 통해 기능 확장 가능
  • 처음에는 고정비용 모델로 시작했으나 이제는 가변비용 모델도 지원 (Redshift Serverless)
  • 온디맨드 가격 이외에도 예약 가격 옵션도 지원

❖ CSV, JSON, Avro, Parquet 등과 같은 다양한 데이터 포맷을 지원
❖ AWS내의 다른 서비스들과 연동이 쉬움

  • S3, DynamoDB, SageMaker 등등, ML 모델의 실행도 지원 (SageMaker)
  • Redshift의 기능 확장을 위해 Redshift Spectrum, AWS Athena등의 서비스와 같이 사용 가능

❖ 배치 데이터 중심이지만 실시간 데이터 처리 지원
❖ 웹 콘솔 이외에도 API를 통한 관리/제어 가능


Snowflake

❖ 2014년에 클라우드 기반 데이터웨어하우스로 시작됨 (2020년 상장)

  • 지금은 데이터 클라우드라고 부를 수 있을 정도로 발전
  • 데이터 판매를 통한 매출을 가능하게 해주는 Data Sharing/Marketplace 제공
  • ETL과 다양한 데이터 통합 기능 제공

❖ SQL 기반으로 빅데이터 저장, 처리, 분석을 가능하게 해줌

  • 비구조화된 데이터 처리와 머신러닝 기능 제공

❖ CSV, JSON, Avro, Parquet 등과 같은 다양한 데이터 포맷을 지원

  • S3, GC 클라우드 스토리지, Azure Blog Storage도 지원

❖ 배치 데이터 중심이지만 실시간 데이터 처리 지원
❖ 웹 콘솔 이외에도 API를 통한 관리/제어 가능


Google Cloud Bigquery

❖ 2010년에 시작된 구글 클라우드의 데이터 웨어하우스 서비스

  • 구글 클라우드의 대표적인 서비스
  • BigQuery SQL이란 SQL로 데이터 처리 가능 (Nested fields, repeated fields 지원)
  • 가변 비용과 고정 비용 옵션 지원

❖ CSV, JSON, Avro, Parquet 등과 같은 다양한 데이터 포맷을 지원
❖ 구글 클라우드 내의 다른 서비스들과 연동이 쉬움

  • 클라우드 스토리지, 데이터플로우, AutoML 등등

❖ 배치 데이터 중심이지만 실시간 데이터 처리 지원
❖ 웹 콘솔 이외에도 API를 통한 관리/제어 가능


Apache Hive

❖ Facebook이 2008년에 시작한 아파치 오픈소스 프로젝트
❖ 하둡 기반으로 동작하는 SQL 기반 데이터 웨어하우스 서비스

  • HiveQL이라 부르는 SQL 지원
  • MapReduce위에서 동작하는 버전과 Apache Tez를 실행 엔진으로 동작하는 버전 두 가지가 존재
  • 다른 하둡 기반 오픈소스들과 연동이 쉬움 (Spark, HBase 등등)
  • 자바나 파이썬으로 UDF 작성 가능

❖ CSV, JSON, Avro, Parquet 등과 같은 다양한 데이터 포맷을 지원
❖ 배치 빅데이터 프로세싱 시스템

  • 데이터 파티셔닝과 버킷팅과 같은 최적화 작업 지원
  • 빠른 처리속도 보다는 처리할 수 있는 데이터 양의 크기에 최적화

❖ 웹 UI와 커맨드라인 UI (CLI라고 부름) 두 가지를 지원
❖ 점점 Spark에 의해 밀리는 분위기임


Apache Presto

❖ Facebook이 2013년에 시작한 아파치 오픈소스 프로젝트
❖ 다양한 데이터소스에 존재하는 데이터를 대상으로 SQL 실행 가능

  • HDFS (Hadoop Distributed File System), S3, Cassandra, MySQL 등등
  • PrestoSQL이란 부르는 SQL 지원

❖ CSV, JSON, Avro, ORC, Parquet 등과 같은 다양한 데이터 포맷을 지원
❖ 배치 빅데이터 프로세싱 시스템

  • Hive와는 다르게 빠른 응답 속도에 좀더 최적화 (메모리 기반)

❖ 웹 UI와 커맨드라인 UI (CLI라고 부름) 두 가지를 지원
❖ AWS Athena가 바로 Presto를 기반으로 만들어짐


Apache Iceberg

❖ Netflix가 2018년에 시작한 아파치 오픈소스 프로젝트로 데이터 웨어하우스기술이 아님
❖ 대용량 SCD (Slowly-Changing Datasets) 데이터를 다룰 수 있는 테이블 포맷

  • HDFS, S3, Azure Blob Storage 등의 클라우드 스토리지 지원
  • ACID 트랙잭션과 타임여행 (과거 버전으로 롤백과 변경 기록 유지 등등)
  • 스키마 진화 (Schema Evolution) 지원을 통한 컬럼 제거와 추가 가능 (테이블 재작성 없이)

❖ 자바와 파이썬 API를 지원
❖ Spark, Flink, Hive, Hudi 등의 다른 Apache 시스템과 연동 가능


Apache Spark

❖ UC 버클리 AMPLab이 2013년에 시작한 아파치 오픈소스 프로젝트
❖ 빅데이터 처리 관련 종합선물세트

  • 배치처리(API/SQL), 실시간처리, 그래프처리, 머신러닝 기능 제공

❖ 다양한 분산처리 시스템 지원

  • 하둡(YARN), AWS EMR, Google Cloud Dataproc, Mesos, K8s 등등

❖ 다양한 파일시스템과 연동 가능

  • HDFS, S3, Cassandra, HBase 등등

❖ CSV, JSON, Avro, ORC, Parquet 등과 같은 다양한 데이터 포맷을 지원
❖ 다양한 언어 지원: 자바, 파이썬, 스칼라, R

0개의 댓글