Data Lake & Big Data

Schema-on-Read, Zone 구조, Hadoop/Spark, Data Lakehouse


📚 시리즈 네비게이션

이전현재다음
DW SystemData LakeETL & Pipeline

시리즈 목차


🎯 Data Lake란?

Data Lake: 정제되지 않은 원시 데이터를 원본 그대로 저장하는 중앙 저장소

핵심 특징:

  • 원본 데이터 그대로 저장 (Schema-on-Read)
  • 정형/반정형/비정형 데이터 모두 수용
  • 저렴한 스토리지에 대용량 저장
  • 나중에 필요할 때 변환/분석

🆚 DW vs Data Lake

구분Data WarehouseData Lake
데이터 형태정형 (구조화)정형/반정형/비정형
스키마Schema-on-WriteSchema-on-Read
처리 시점적재 전 변환 (ETL)사용 시 변환 (ELT)
저장 비용높음낮음
사용자비즈니스 분석가데이터 엔지니어, 과학자
쿼리 성능빠름 (최적화됨)상대적으로 느림
데이터 품질높음 (정제됨)다양함 (원본)
flowchart LR
    subgraph DW["Data Warehouse"]
        DW1["정제된 데이터<br/>┌─┬─┬─┐<br/>│A│B│C│<br/>├─┼─┼─┤<br/>│1│2│3│<br/>└─┴─┴─┘"]
        DW2["'분석 준비됨'"]
    end
    
    subgraph DL["Data Lake"]
        DL1["원시 데이터<br/>JSON, CSV,<br/>이미지, 로그"]
        DL2["'나중에 정제'"]
    end

📊 Schema-on-Write vs Schema-on-Read

구분Schema-on-Write (DW)Schema-on-Read (Data Lake)
스키마 정의저장 전조회 시
유연성낮음높음
데이터 품질높음다양함
저장 속도느림 (변환)빠름 (원본 저장)
쿼리 속도빠름느림

🏗️ Data Lake 아키텍처

Zone 구조

Data Lake는 보통 여러 영역(Zone)으로 나뉨.

flowchart TB
    subgraph Zones["Data Lake Zones"]
        Raw["[1] Raw Zone (Landing Zone)<br/>원천 데이터 원본 그대로<br/>변환 없음, 감사 목적"]
        Cleansed["[2] Cleansed Zone (Curated Zone)<br/>정제/표준화된 데이터<br/>중복 제거, 형식 통일"]
        Trusted["[3] Trusted Zone (Analytics Zone)<br/>분석 가능한 상태<br/>비즈니스 로직 적용<br/>DW/Data Mart로 이동 가능"]
        
        Raw --> Cleansed --> Trusted
    end

🔧 Big Data 기술 스택

저장 (Storage)

기술설명
HDFSHadoop Distributed File System, 분산 파일 시스템
Amazon S3클라우드 오브젝트 스토리지
Azure Data Lake StorageAzure 데이터 레이크 스토리지
Google Cloud StorageGCP 오브젝트 스토리지

처리 (Processing)

기술유형설명
Hadoop MapReduce배치대용량 배치 처리 (레거시)
Apache Spark배치/스트림인메모리 처리, 빠름
Apache Flink스트림실시간 스트림 처리
Apache Kafka스트림메시지 큐, 이벤트 스트리밍

쿼리 (Query)

기술설명
Apache HiveSQL on Hadoop, 배치 쿼리
Presto/Trino분산 SQL 엔진, 빠른 쿼리
Apache Drill스키마 없는 쿼리
Amazon AthenaS3 위 서버리스 SQL

🐘 Hadoop 에코시스템

flowchart TB
    subgraph Hadoop["Hadoop Ecosystem"]
        subgraph Ingestion["수집/쿼리"]
            Hive["Hive (SQL)"]
            Pig["Pig (Script)"]
            Sqoop["Sqoop (RDB연동)"]
            Flume["Flume (로그)"]
        end
        
        Processing["MapReduce / Spark<br/>(분산 처리 엔진)"]
        
        YARN["YARN<br/>(리소스 관리자)"]
        
        HDFS["HDFS<br/>(분산 파일 시스템)"]
        
        Ingestion --> Processing --> YARN --> HDFS
    end

⚡ Apache Spark

현재 가장 많이 쓰이는 빅데이터 처리 엔진임.

특징:

  • 인메모리 처리 → MapReduce보다 최대 100배 빠름
  • 배치 + 스트림 처리 통합
  • Python, Scala, Java, R, SQL 지원

구성 요소:

컴포넌트용도
Spark Core기본 엔진, RDD
Spark SQL구조화된 데이터 처리
Spark Streaming실시간 스트림 처리
MLlib머신러닝 라이브러리
GraphX그래프 처리
# PySpark 예시
from pyspark.sql import SparkSession
 
spark = SparkSession.builder.appName("example").getOrCreate()
 
# CSV 읽기
df = spark.read.csv("s3://bucket/data.csv", header=True)
 
# 변환
result = df.filter(df.age > 30).groupBy("department").count()
 
# 저장
result.write.parquet("s3://bucket/output/")

🏢 Data Lakehouse

Data Lakehouse: Data Lake + Data Warehouse 장점 결합

특징설명
ACID 지원Data Lake 위에서 트랜잭션
스키마 관리메타데이터 레이어
성능 최적화인덱싱, 캐싱
통합 접근BI 도구에서 직접 쿼리

주요 기술:

기술설명
Delta LakeDatabricks, Spark 기반
Apache IcebergNetflix 오픈소스
Apache HudiUber 오픈소스
flowchart TB
    subgraph Lakehouse["Data Lakehouse"]
        BI["BI / Analytics / ML"]
        Meta["Delta Lake / Iceberg / Hudi<br/>(ACID, Schema, Indexing)<br/>메타데이터 레이어"]
        Storage["Object Storage (S3, ADLS, GCS)<br/>Parquet, ORC 파일<br/>저장소"]
        
        BI --> Meta --> Storage
    end

☁️ 클라우드 Data Lake 서비스

클라우드서비스설명
AWSS3 + Athena + GlueS3 기반, 서버리스 쿼리
AzureADLS + Synapse통합 분석 서비스
GCPGCS + BigQuery서버리스 DW
DatabricksMulti-cloudSpark 기반 통합 플랫폼

🔗 시리즈 네비게이션

시리즈 목차로 돌아가기