For LakeHouse

참고 문헌;

https://yoonjk.github.io/watson/iceberg/

https://onepredict.github.io/lakehouse-usage-experience/#load-catalog

입사해서 가장 먼저 진행한 프로젝트가 데이터 웨어하우스 프로젝트였다. 가장 먼저 하둡 에코 시스템 구축 및 ETL 파이프라인을 어떻게 설계하고 구현할지 많은 고민을 하다보니, 24년 연말이 되었다.

현재 하둡 에코 시스템이 구축되서 과거, RDB에서 데이터를 엑셀 파일로 저장한 후, 엑셀에서 결제 데이터를 분석하던 프로세스를 Hive와 분석 도구를 통해서 할 수 있도록 환경을 제공하므로써 데이터 분석이 필요한 부서들에게 더 나은 분석 환경을 제공할 수 있게 되었다.

하지만, 여전히 숙제가 남아있다. 우리 회사는 비용 최소화를 굉장히? 좋아한다. 그래서 서비스에서 사용되는 모든 DB는 오라클DB인데, CDC 기능이 제공 안되는 라이센스를 사용하고 있어서…! 거래 원장에 테이블에 증분에 대한 데이터를 하둡에 저장되어 있는 parquet 파일에 업데이트를 해줄 방법이 없다…

그래서 일단 모든 데이터를 Kafka로 받아서 하둡에 저장하고 쿼리로 문제를 해결하려고 했으나, 이 또한 타 부서의 도움과 개발이 진행되어야 가능한 부분이라서, 현실성이 떨어진다라는 판단을 내리고, 25년에는 레이크 하우스를 도입하기로 결정하였다.

최종 목표는 데이터 웨어하우스의 가장 큰 단점인 ACID가 안된다라는 점을 보완하고 데이터 분석 결과와 실 데이터의 정합성을 높이기 위함이다.

그래서 IceBerg 학습 내용과 레이크 하우스 설계부터 구현 및 운영에 대한 내용을 정리해 볼 예정이다.

What is Iceberg?

image.png

Iceberg는 오픈 테이블 포맷으로, 데이터를 효율적으로 관리하고 실시간으로 조회/수정/삭제할 수 있도록 돕는 도구를 말한다.56퓿

오픈 테이블 포맷이란?

오픈 소스로 개발된 테이블 포맷을 말한다.

테이블 포맷이란 여러 파일로 분산되어 저장된 데이터를 하나의 테이블로 추상화해주는 기술입니다.

데이터 레이크나 데이터 웨어하우스에서는 대용량의 데이터가 여러 파일로 저장되는 경우가 많은데, 이러한 파일들을 효율적으로 관리하고 조회/수정/삭제할 수 있도록 하기 위해 테이블 포맷을 사용합니다.

현재 트랜잭셔널 데이터 레이크를 위해 사용되는 오픈 테이블 포맷으로는 3가지가 있습니다:

3가지 오픈 테이블 포맷이 개발되었던 초기에는 각자 조금씩 다른 목적을 갖고 개발되었습니다.

Apache Hudi는 Uber에서 증분 처리(Incremental Processing)을 위해 개발하기 시작했습니다.

Apache Iceberg는 넷플릭스에서 대용량 데이터 테이블을 S3와 같은 객체 저장소(Object Stores)에서 효율적으로 관리하고 처리하기 위해 개발하기 시작했습니다.

Delta Lake는 Databricks에서 ACID 트랜잭션 보장하여 일관성 있는 읽기/쓰기를 위해 개발하기 시작했습니다.

그래서 내부적으로 데이터를 저장하고 처리하는 기술은 조금씩 다릅니다.

하지만 각각의 오픈 테이블 포맷의 버전이 업그레이드 될 때마다 사용자 입장에서 느끼기에는 점점 비슷해지고 있는게 사실입니다.

세 가지 오픈 테이블 포맷을 비교/대조한 AWS 테크 블로그가 있으니 관심 있으신 분은 확인해보세요.

다음에는 AWS에서 Glue, S3를 이용해 실제로 트랜잭셔널 데이터 레이크를 구축하는 방법에 대한 포스팅으로 돌아오겠습니다.