Iceberg는 빅데이터 분석을 위한 open table format 중 하나이다.
데이터레이크에서 대규모 데이터를 효율적으로 관리하고 분석할 수 있도록 설계되어 있다.
확장성, 성능, 그리고 복잡한 요구사항까지 충족되며 다양한 데이터 레이크 환경에서 동작할 수 있다. (HDFS, S3, Google Cloud Storage..)
데이터 엔지니어는 Apache Iceberg를 사용해 대규모 데이터를 빠르고 효율적이고 안정적으로 관리할 수 있다.
특히 Spark, Flink, Hive, Trino 등 다양한 데이터 처리 엔진과 통합하여 사용할 수 있다.
Iceberg에 대한 다양한 기능들을 하나하나 공부해보고 정리해보려고 한다.
다양한 장점과 이점들이 있지만 AWS에 정리된 문서를 기반으로 정리해봤다.
정말 다양한 기능들을 제공하는 Table format으로 parquet와 함께 다양한 비즈니스 요구사항과 많은 기술적인 문제들을 해결해 줄 수 있다.
특히 CDC를 활용한 증분데이터 처리가 매우 기대가 된다.
저장 된 파일들을 update 하거나 변경이 필요한 부분을 처리해주는 기능... 실무 레벨에서 꼭 사용해보려고 한다
Iceberg는 데이터를 디렉토리 단위로 관리하는 것이 아닌 테이블에 포함된 개별 데이터 파일을 관리한다.
테이블의 상태를 관리하기 위해 메타데이터를 사용한다.
메타데이터는 스키마, 파티션 정보, 데이터 파일 위치, 스냅샷 정보 등 파일의 메타데이터를 포함하고 있다.
테이블 상태가 바뀔때마다 새로운 메타데이터를 생성하고 이를 atomic swap 방식으로 대체
(atomi : 변경 작업의 중단 없이 한번에 발생. 데이터 손상 & 불일치 방지)
테이블의 스탭샷을 생성하여 변경 이력과 히스토리를 관리한다.
각 스냅샷은 데이터 파일의 상태와 메타데이터를 참조하게 된다.
스냅샷을 통해 특정 시점의 데이터로 되돌아가거나 변경 이력을 추적할 수 있다
매니페스트 파일들의 집합(스냅샷)을 관리하는 파일이다.
매니페스트 파일에는 각 테이블에 대한 정보가 있다.
- 파일의 파티션 정보, 메트릭(파일 크기, 행 수 등..)
- 스냅샷의 데이터는 매니페스트에 포함된 모든 파일들의 합집합이다.
매니페스트 파일들의 스냅샷을 관리하는 파일 (매니페스트 파일의 메타데이터)
명시적인 commit 과정을 통해 테이블에 추가되므로 데이터의 일관성이 보장된다
=> ACID 트랜잭션을 지원하여 데이터 일관성과 무결성을 보장한다.
실제 데이터가 저장되는 것이며 Parquet, Avro, ORC 같은 file format으로 저장된다.
=> Parquet File format을 Iceberg Table format으로 관리한다
각 데이터 파일은 Metadata에 의해 관리된다.
파일 포맷이지만 DB에서 지원할법한 다양한 기능들을 지원해서 놀랍다.
이제는 S3, HDFS에 저장된 parquet 데이터를 Iceberg를 사용해 lakehouse를 구축하여 확장성있게 사용하는 것이 가능하다.
실시간 데이터 처리와 복잡한 비즈니스 요구사항을 해결할 수 있는 다양한 확장성과 많은 문제를 해결할 수 있을 것 같다.
이제 Spark 등 다양한 환경에서 사용해보면서 하나하나 공부해보려고 한다
Kafka Connect Plugin 설치하기 (3) | 2024.09.19 |
---|---|
Kafka Connect 공부하기 (1) (3) | 2024.09.18 |
AWS EC2 인스턴스에 Kafka Cluster 구축하기 (2) | 2024.09.13 |
Data Warehouse, Data Lake, Data Lakehouse (3) | 2024.08.16 |