
데이터 레이크를 운영하면서 가장 고민되는 부분 중 하나가 테이블 포맷 선택인데요.
현재 가장 많이 사용되는 Iceberg, Hudi, Delta Lake에 대해 비교해보려 합니다.
근데 잠깐, 데이터 레이크는 왜 등장했을까요?

전통적인 데이터 웨어하우스는 정형 데이터를 저장하고 분석하는데 최적화되어 있었습니다. 하지만 빅데이터 시대가 도래하면서 비정형 데이터도 처리해야 하고, 더 유연하고 확장 가능한 저장소가 필요해졌죠.
그래서 등장한게 '데이터 레이크'입니다. 모든 종류의 데이터를 원본 형태로 저장할 수 있고, 비용도 저렴하죠. 하지만 데이터 레이크에도 문제가 있었습니다.
데이터 레이크의 한계
- 데이터 스왐프화: 통제되지 않은 데이터가 쌓이다 보니 데이터 품질이 떨어지고 관리가 어려워졌습니다.
- ACID 미지원: 동시성 제어나 트랜잭션 보장이 어려웠습니다.
- 성능: 파일 기반 쿼리의 한계로 웨어하우스만큼 빠른 성능을 내기 어려웠습니다.
- 데이터 거버넌스: 메타데이터 관리나 보안, 감사가 쉽지 않았습니다.
이런 문제를 해결하기 위해 등장한 것이 바로 '데이터 레이크하우스'입니다.

데이터 레이크하우스는 데이터 레이크의 유연성과 데이터 웨어하우스의 안정성, 성능을 모두 제공하려는 아키텍처죠.
그리고 이 데이터 레이크하우스를 구현하는 핵심 기술이 바로 테이블 포맷입니다.
테이블 포맷이 왜 필요한가요?
"그냥 파일만 있으면 되는거 아닌가요?" 라고 생각하실 수 있습니다.
하지만 데이터 레이크하우스에서 필요한:
- ACID 트랜잭션
- 시간 여행(Time Travel)
- 스키마 관리
- 효율적인 쿼리 성능
이런 기능들을 제공하려면 테이블 포맷이 필수적입니다.
각 포맷별 특징을 살펴볼까요?

Apache Iceberg
장점
- 성능: 파티션 진화와 숨겨진 파티셔닝을 통해 뛰어난 쿼리 성능을 제공합니다.
- 스키마 진화: 스키마 변경이 자유롭고 하위 호환성이 보장됩니다.
- 확장성: 대규모 테이블도 효율적으로 처리할 수 있습니다.
- 넓은 생태계: Spark, Flink, Trino 등 다양한 엔진과 호환됩니다.
- 클라우드 지원: 특히 AWS에서 EMR, Athena, Redshift 등 다양한 서비스와의 통합을 제공합니다.
Apache Hudi
장점
- 실시간 처리: 스트리밍 데이터 처리에 최적화되어 있습니다.
- 업서트 지원: 레코드 수준의 업데이트와 삭제가 가능합니다.
- 증분 처리: 변경된 데이터만 효율적으로 처리할 수 있습니다.
- 풍부한 사용 사례: 우버에서 시작되어 실제 프로덕션 환경에서 검증되었습니다.
단점
- 복잡성: 설정이 복잡하고 최적화가 어려울 수 있습니다.
- 리소스 사용: 인덱싱과 업서트로 인해 리소스 사용량이 높을 수 있습니다.
Delta Lake
장점
- 안정성: Databricks의 지원으로 안정적인 운영이 가능합니다.
- 사용 편의성: 직관적인 API와 풍부한 문서를 제공합니다.
- 통합성: Databricks 환경에서 완벽하게 통합됩니다.
- 최적화: Z-ordering을 통한 쿼리 최적화를 제공합니다.
단점
- Databricks 종속성: 일부 고급 기능은 Databricks 환경에서만 사용 가능합니다.
- 제한된 엔진 지원: Spark 외 다른 엔진과의 호환성이 상대적으로 부족합니다.
어떤 것을 선택해야 할까요?
상황에 따라 다르지만, 개인적으로 제가 추천하는 기준은 이렇습니다:
- Databricks를 사용중이라면 -> Delta Lake
- 클라우드 중립적이고 다양한 엔진을 사용한다면(특히나 aws 라면!) -> Iceberg
결론
데이터 레이크하우스라는 새로운 패러다임과 함께 테이블 포맷도 계속 발전하고 있습니다.
세 포맷 모두 각자의 장단점이 있지만, 최근 추세를 보면 Iceberg의 성장세가 가파릅니다. 특히 클라우드 중립성과 다양한 엔진 지원은 멀티 클라우드 환경에서 큰 장점으로 작용하고 있죠.
하지만 무조건 트렌드를 따라가기보다는, 자신의 사용 사례와 환경에 맞는 포맷을 선택하는 것이 중요합니다.
'기술 > 데이터 엔지니어링' 카테고리의 다른 글
Parquet를 통해 효율적으로 데이터 관리하기 (0) | 2024.05.06 |
---|---|
데이터 엔지니어링(2) - elk 스택을 활용한 로깅시스템 구축하기 (0) | 2023.08.27 |
데이터 엔지니어링(1) - elasticsearch 너 누구야? (0) | 2023.08.20 |
데이터 엔지니어링(0) - 데이터 엔지니어링이란 무엇인가? (0) | 2023.08.09 |