Iceberg 개요

Apache Iceberg는 거대한 규모의 데이터 레이크(Data Lake) 환경에서 신뢰성과 성능을 제공하기 위해 설계된 오픈 소스 고성능 테이블 포맷(Table Format)입니다. 넷플릭스(Netflix)에서 기존 Hive 메타스토어의 한계를 극복하기 위해 개발되었으며, 현재는 아파치 소프트웨어 재단에서 관리하고 있습니다.

박사님과 같이 AI/SW 개발 및 데이터 엔지니어링 실무 경험이 풍부하신 분들께는 “오브젝트 스토리지 위에서 RDBMS와 같은 ACID 트랜잭션을 구현한 추상화 계층”으로 이해하시면 가장 정확합니다.


1. Apache Iceberg의 개념 및 개요

기존의 데이터 레이크 방식(예: Hive)은 데이터를 파일 시스템(HDFS, S3 등)의 ‘디렉터리 구조’로 관리했습니다. 반면, Iceberg는 ‘파일 단위’의 스냅샷을 통해 테이블의 상태를 추적합니다.

  • 정의: 페타바이트(PB) 규모의 대형 테이블을 위한 개방형 테이블 규격.
  • 핵심 철학: 컴퓨팅 엔진(Spark, Flink, Trino 등)과 데이터 저장소(S3, Azure Blob, HDFS) 사이에서 독립적인 테이블 추상화 레이어를 제공하여 “엔진 독립성”을 유지함.

2. 주요 아키텍처 (3 Layer 구조)

Iceberg는 메타데이터를 계층화하여 관리함으로써 성능과 안정성을 확보합니다.

  1. Catalog Layer: 현재 테이블의 최신 상태(Current Metadata File)가 어디인지 가리키는 포인터 역할을 합니다. (예: AWS Glue, Hive Metastore, Nessie 등)
  2. Metadata Layer:
    • Metadata File: 테이블 스키마, 파티션 정보, 스냅샷 목록을 저장.
    • Manifest List: 특정 스냅샷에 포함된 Manifest 파일 목록 관리.
    • Manifest File: 실제 데이터 파일(.parquet, .orc 등)의 경로와 통계 정보(Min/Max 값 등)를 기록하여 쿼리 시 불필요한 파일을 건너뛰게(Pruning) 함.
  3. Data Layer: 실제 데이터가 저장되는 레이어입니다.

3. 사용 목적 및 핵심 기능

  • ACID 트랜잭션 보장: 여러 프로세스가 동시에 데이터를 쓰거나 읽어도 데이터의 일관성을 유지합니다. (Serializability 보장)
  • 스키마 진화 (Schema Evolution): 컬럼 추가, 삭제, 이름 변경, 타입 변경 시 데이터 파일을 다시 쓰지 않고 메타데이터만 업데이트하여 즉각 반영합니다.
  • 숨겨진 파티셔닝 (Hidden Partitioning): 사용자가 쿼리에 파티션 컬럼을 명시하지 않아도, Iceberg가 데이터의 상관관계를 파악해 필요한 파티션만 읽습니다. 파티션 구조 변경 시에도 과거 쿼리를 수정할 필요가 없습니다.
  • 타임 트래블 및 롤백 (Time Travel): 특정 시점의 스냅샷으로 쿼리를 실행하거나, 잘못된 업데이트 발생 시 이전 상태로 복구할 수 있습니다.

4. 장단점 분석

장점 (Pros)

  • 성능 최적화: 파일 단위의 통계(Min/Max)를 메타데이터에 들고 있어 쿼리 실행 시 I/O를 획기적으로 줄입니다.
  • 엔진 범용성: Spark, Trino, Flink, Hive, Presto 등 다양한 컴퓨팅 엔진에서 동일한 테이블에 접근 가능합니다.
  • 신뢰성: 쓰기 작업 중 장애가 발생해도 Snapshot 방식 덕분에 데이터 오염이 발생하지 않습니다.
  • 저렴한 비용: 비싼 데이터 웨어하우스(DW) 대신 S3 같은 저렴한 오브젝트 스토리지를 DW처럼 활용(Lakehouse)할 수 있습니다.

단점 (Cons)

  • 메타데이터 관리 부담: 스냅샷이 쌓일수록 메타데이터 파일이 늘어나므로, 주기적으로 오래된 스냅샷을 삭제하고 데이터 파일을 병합(Compaction)하는 관리 작업이 필요합니다.
  • 작은 파일 문제: 실시간 스트리밍으로 데이터를 넣을 경우 작은 파일(Small Files)이 많이 생성되어 성능이 저하될 수 있으므로 별도의 튜닝이 필수적입니다.
  • 학습 곡선: 기존 Hive 방식과는 아키텍처가 다르므로 운영 조직의 이해도가 요구됩니다.

5. 활용도 (Use Cases)

  1. 데이터 레이크하우스 구축: AWS S3나 Azure Data Lake Storage 위에서 DW 기능을 구현할 때 핵심 기술로 사용됩니다.
  2. 실시간 및 배치 통합 처리: Flink를 이용한 실시간 CDC(Change Data Capture) 데이터를 Iceberg에 적재하고, 동시에 Spark로 배치 분석을 수행하는 아키텍처에 적합합니다.
  3. 머신러닝(ML) 데이터 관리: AI 연구 시 데이터 재현성(Reproducibility)이 중요한데, 타임 트래블 기능을 통해 특정 시점의 학습 데이터를 정확히 추출할 수 있습니다.
  4. 규제 준수 (GDPR/CCPA): 특정 사용자의 데이터를 삭제해야 할 때, 기존 파일 시스템 방식보다 훨씬 정교하고 안전하게 레코드 단위 삭제를 처리할 수 있습니다.

© 2020. AiDALab Co. All rights reserved.

Powered by Hydejack v9.2.1