Search

What is Apache Iceberg?

Subtitle
Iceberg의 특징과 차별점
Index
Iceberg
Date
2024/11/24
2 more properties

Open table format이란?

Apache Iceberg is an open table format for huge analytic datasets. Iceberg adds tables to compute engines including Spark, Trino, PrestoDB, Flink, Hive and Impala using a high-performance table format that works just like a SQL table.
공식문서에 따르면 iceberg는 대용량 분석을 위한 고성능의 오픈 테이블 포맷(OTF)이라고 되어 있습니다.
오픈 테이블 포맷이 무엇일까요?
이를 알기 위해 먼저 데이터 레이크에 대해 알아야 합니다.
데이터 레이크(DL) vs 데이터 웨어하우스(DW)
둘의 결정적인 차이는 스키마에 제약이 있냐 없냐입니다.
DL은 제약이 없기 때문에 자유롭게 모든 데이터를 저장할 수 있고, DW에 비해 저장 비용이 아주 저렴합니다.
DW는 스키마가 미리 정의되어 있기에 분석에 용이합니다.
테이블 포맷은 DL의 관리 문제로 인해 생겨났습니다.
원시 데이터를 저장하다 보니 데이터를 관리하는데 한계가 있었습니다.
DL은 RDBMS가 아니라 일반적인 스토리지이기 때문에 따로 컴퓨팅 작업이 없습니다.
따라서 달리 ACID를 보장하지 못하고, CRUD 또한 굉장히 제한적이죠.
OTF은 DL에서도 RDBMS와 같이 데이터 신뢰성을 보장해주는 작업을 위해 탄생했다고 볼 수 있습니다.
Apache Iceberg 또한 OTF 중에 하나입니다.

Apache Iceberg OTF

Iceberg는 전통적인 데이터베이스의 SQL 테이블과 유사한 성능 및 기능을 다양한 엔진을 사용해서 접근할 수 있도록 합니다.
Transactional consistency
Full schema evolution
Time Travel
Iceberg는 특정 시점 스냅샷을 기록한 메타데이터를 통해 DL에서 SQL 테이블과 같은 기능을 사용할 수 있도록 합니다.
또한 이러한 스냅샷 메타데이터를 계층 구조로 관리하기 때문에 테이블 업데이트에 빠르고 효율적으로 대응할 수가 있습니다.
기본적으로 standard file format(Parquet, Avro…) 뿐 아니라 , Dremio, Spark, Hive와 같은 엔진들을 지원합니다.

Data Lake Storage의 한계와 Metadata catalogs

보통 DL에서는 디렉터리 안에 여러 파일을 하나의 테이블이라고 생각합니다.
이런 접근은 굉장히 높은 접근성과 유연성을 기반으로 데이터를 다룰 수 있다는 장점이 있지만 아래의 기능이 중요한 RDB나 DW의 기본 컨셉과는 맞지 않는 부분이 많습니다.
schema
partition
coordinate data change
이러한 lack을 채워주기 위해 등장한 것이 Metadata catalogs 입니다.
Catalog는 DL 데이터를 효과적으로 관리하기 위한 방법입니다.
카탈로그를 통해 DL에 어떤 데이터가 어디에 있고 어떤 스키마를 가지고 있는지를 정의할 수가 있습니다.
대표적으로 Hive Metastore, AWS Glue 등이 있습니다.

Catalog가 채워주지 못하는 것

카탈로그가 전반적인 DL에 저장하는 데이터들의 메타데이터를 잘 관리해주기는 하지만 그렇다고 RDB 처럼 사용할 수는 없습니다.
애플리케이션 간의 데이터 변경이나 스키마 변화에 대해 transactionally consistent한 방식으로 coordinate를 해주지 않기 때문입니다.
데이터가 static 하다면 큰 문제가 되지 않겠지만 여러 애플리케이션 간의 read-write가 계속해서 일어난다면 결국 데이터셋에 대한 inconsistent한 view가 생기게 됩니다.

Iceberg가 가진 기존 Catalog와의 차별점

Iceberg는 주로 Hive Metastore와 많이 비교되고는 합니다.
하지만 Hive Metastore가 Hive에서만 사용할 수 있다면 Iceberge는 Spark, Hive, Bigquery 등 다양한 어플리케이션에서 사용이 가능합니다.
게다가 Iceberg는 스키마 및 데이터 변화에 대한 히스토리를 모두 지원하고 있다는 점도 차별점을 가집니다.
Iceberg를 이용함으로써 데이터레이크 아키텍처의 저렴한 비용이라는 장점을 취하면서 다양한 어플리케이션과 연동할 수 있다는 flexibility와 agility를 가질 수 있습니다.

Comparison

이러한 OTF는 Iceberg 외에도 Delta Lake, Apache Hudi 등이 존재합니다.
간단하게 이 3가지 OTF를 비교한 표가 있어 첨부합니다.

Reference