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를 비교한 표가 있어 첨부합니다.