IT개발

데이터 레이크하우스(Lakehouse) 구현: Delta Lake vs Apache Iceberg

우리모두 개발자되기 2025. 5. 1. 19:58

 

데이터 레이크하우스(Lakehouse) 구현: Delta Lake vs Apache Iceberg


1. 데이터 레이크하우스란 무엇인가

**데이터 레이크하우스(Data Lakehouse)**는
Data Lake의 확장성과 비용 효율성,
Data Warehouse의 ACID 트랜잭션과 고급 쿼리 성능을 결합한 아키텍처입니다.

기존 Data Lake는

  • 비정형 데이터를 자유롭게 저장할 수 있지만
  • 데이터 품질 관리, 트랜잭션 처리, 스키마 관리 측면에서 불안정했습니다.

반면 Data Warehouse는

  • 고급 쿼리와 강력한 데이터 품질을 보장하지만
  • 확장성이 낮고 저장 비용이 높았습니다.

Lakehouse는 이러한 장단점을 통합하여

  • Data Lake 위에 ACID 트랜잭션
  • 스키마 진화(Schema Evolution)
  • 강력한 쿼리 최적화

기능을 추가하여
하나의 통합된 분석 플랫폼을 제공합니다.


2. Lakehouse를 위한 핵심 테이블 포맷

Lakehouse 구현을 위해서는
기존의 단순한 파일 저장(Filesystem Storage)을 넘어
고급 메타데이터 관리와 트랜잭션 지원이 가능한 테이블 포맷이 필요합니다.

대표적인 오픈 소스 테이블 포맷은 다음과 같습니다.

  • Delta Lake (Databricks 주도)
  • Apache Iceberg (Netflix, Apple, LinkedIn 주도)
  • Apache Hudi (Uber 주도)

이번 글에서는 특히 Delta LakeApache Iceberg를 중심으로 비교합니다.


3. Delta Lake 심층 분석

3.1 개요

  • 2019년 Databricks가 공개
  • Data Lake에 ACID 트랜잭션을 추가하는 것이 핵심
  • 기본 저장소: Parquet 파일 + Transaction Log(JSON)

3.2 주요 특징

  • ACID 트랜잭션 지원
    • commit, rollback 가능
    • 다중 작업 병렬 처리 안정화
  • 스키마 진화(Schema Evolution)
    • 컬럼 추가/삭제 등 데이터 구조 변경 지원
  • 타임 트래블(Time Travel)
    • 과거 특정 시점 데이터 조회 가능
    • 예시: SELECT * FROM table TIMESTAMP AS OF '2024-01-01'
  • 데이터 옵티마이제이션
    • 데이터 컴팩션(Compaction) 및 Z-Order 클러스터링 제공
    • 파일 수 감소 및 쿼리 최적화
  • DML 지원
    • UPDATE, DELETE, MERGE 문법 지원
  • Databricks 통합 최적화
    • Databricks Runtime에 최적화되어 최고 성능 발휘
    • AWS S3, Azure Blob, GCS 지원

3.3 아키텍처 구조

  • Delta Table은
    • 데이터 파일(Parquet)과
    • 트랜잭션 로그(_delta_log 디렉토리) 로 구성됩니다.

모든 변경은 트랜잭션 로그에 기록되며,
쿼리 시 최신 스냅샷을 기반으로 읽습니다.


4. Apache Iceberg 심층 분석

4.1 개요

  • 2018년 Netflix 내부 프로젝트로 시작
  • 2020년 Apache 재단 정식 프로젝트 채택
  • 설계 초기부터 "대규모 분산 환경"과 "테이블 버저닝"을 염두에 둠

4.2 주요 특징

  • 진정한 스냅샷 기반 읽기(Snapshot Isolation)
    • 읽기 작업은 항상 일관성 있는 스냅샷을 사용
    • 무중단 데이터 업데이트 가능
  • 고급 파티셔닝 지원
    • Hidden Partitioning: 사용자는 파티션 키를 몰라도 됨
    • 파티션 스펙 변경이 쉬움
  • 트랜잭션 메타데이터 파일 관리
    • 테이블 상태를 메타데이터 파일 하나에 관리
    • GC(가비지 컬렉션) 및 최적화 쉬움
  • 스키마 진화 및 버저닝
    • 컬럼 추가/삭제/타입 변경 모두 지원
    • 과거 버전 스냅샷 탐색 가능
  • 멀티 엔진 호환성
    • Apache Spark, Flink, Hive, Trino, Presto, Dremio 등 광범위한 호환

4.3 아키텍처 구조

  • Iceberg Table은
    • 데이터 파일(Parquet, ORC 등)
    • 매니페스트 파일
    • 스냅샷 메타데이터 파일

로 구성됩니다.

스냅샷을 중심으로 읽기/쓰기 동작이 일어나므로
동시성 제어 및 롤백이 뛰어납니다.


5. Delta Lake vs Apache Iceberg 심층 비교

항목 Delta Lake Apache Iceberg
주요 후원사 Databricks Netflix, Apple, LinkedIn
최초 공개 2019년 2018년
트랜잭션 지원 ACID 트랜잭션 (JSON 로그 기반) ACID 트랜잭션 (스냅샷 기반)
스키마 진화 지원 (컬럼 추가/삭제) 지원 (컬럼 추가/삭제/타입 변경)
파티셔닝 수동 파티셔닝(Z-Order 최적화) 자동 파티셔닝(Partition Evolution 지원)
Time Travel 지원 지원
쿼리 엔진 호환성 Spark 중심 Spark, Flink, Trino, Presto, Hive 등 다양
성능 최적화 Z-Order 클러스터링, 파일 컴팩션 파일 레벨 최적화, Hidden Partitioning
저장소 지원 S3, Azure Blob, GCS S3, Azure Blob, GCS 등
API 표준화 Databricks Delta Table API Apache Iceberg API (표준 기반)
커뮤니티 오픈성 비교적 폐쇄적 매우 개방적

6. Lakehouse 구축 시 선택 가이드

6.1 Delta Lake를 선택해야 할 경우

  • Databricks 플랫폼을 이미 사용하고 있는 경우
  • Spark 중심 워크로드를 주로 운용하는 경우
  • Delta Sharing을 통한 데이터 공유를 원할 경우
  • Databricks Managed Table로 운영 편의성을 극대화하고자 할 경우

6.2 Apache Iceberg를 선택해야 할 경우

  • 다양한 쿼리 엔진(Flink, Trino, Presto 등)과 연동할 경우
  • 진정한 벤더 독립성과 개방성을 중요시할 경우
  • 대규모 테이블에서 파티션 스키마 변경을 자주 하는 경우
  • 오픈 소스 중심으로 플랫폼을 구성하려는 경우

7. Lakehouse 구축 Best Practice

  • 메타스토어 일관성 확보
    • Hive Metastore, AWS Glue Catalog, AWS Lake Formation 등을 사용
    • 테이블 포맷과 카탈로그 연동 관리 필요
  • 데이터 옵티마이제이션 주기 운영
    • Delta: OPTIMIZE 명령어 사용
    • Iceberg: Rewrite Manifest 및 Compact Files 주기적 실행
  • 데이터 거버넌스 통합
    • 민감 정보 암호화, 데이터 품질 검사, 권한 관리 체계 구축
  • 모니터링 및 비용 최적화
    • 스토리지 파일 증가 모니터링
    • 불필요한 Snapshot 및 Manifest 청소
  • 버전 업그레이드 주의
    • Delta 1.x → 2.x, Iceberg 0.x → 1.x 간 버전 호환성 주의 필요

8. 결론

데이터 레이크하우스 아키텍처는

  • 데이터 확장성
  • 데이터 품질
  • 분석 성능
    이라는 세 마리 토끼를 동시에 잡기 위한 진화된 접근입니다.

Delta Lake와 Apache Iceberg 모두
Lakehouse 구축을 위한 강력한 테이블 포맷이지만,
조직의 기술 스택, 운영 전략, 거버넌스 체계에 따라 적합한 선택이 달라집니다.

  • 빠른 구축과 Databricks 통합 최적화를 원한다면 Delta Lake
  • 벤더 독립성과 오픈 소스 확장성을 원한다면 Apache Iceberg

를 선택하는 것이 합리적입니다.

올바른 테이블 포맷을 선택하여
자신만의 강력한 Lakehouse 플랫폼을 구축해 보십시오.