Iceberg 表如何工作,与传统数仓有何区别?

考查重点:表格式快照与计算引擎分工。Iceberg 以元数据快照组织数据文件,支持原子提交与表演进;它是表格式,不替代计算引擎或整个数仓

本题目录

参考答案

核心回答

Iceberg 是面向大规模分析数据的开放表格式,规定一张表如何组织数据文件、元数据、快照和提交。它不是一个独立 SQL 引擎,也不等同于整套数据仓库;Spark、Flink、Trino 等引擎可以在支持范围内读写同一表格式。

与传统数仓比较时,应先明确对象:与传统 Hive 外部表的目录/分区管理相比,Iceberg 强化了文件级元数据、快照和表演进;与完整数仓产品相比,它只覆盖其中的表存储管理层,仍需计算、目录、权限、治理与运维系统。

元数据怎样找到数据

典型链路是 Catalog 指向当前表元数据,元数据记录 Schema、分区规格和快照;快照引用 manifest list,后者列出 manifest,manifest 再记录数据或删除文件及其统计信息。数据文件通常采用 Parquet、ORC 或 Avro。

读取时,引擎基于已提交快照规划文件,再利用分区信息和列统计裁剪不需要扫描的文件。快照描述某时刻表的文件集合,并不是每次都物理复制整张表;多个快照可以复用未变更文件。

写入和并发如何工作

写者先产生新文件及元数据,再通过 Catalog 对当前元数据引用进行原子提交。多个写者可以乐观并发;若其他写者先提交,失败的一方需要基于新状态重新验证并重试,冲突操作并非都能无条件成功。读者按一个已提交快照读取,避免看见半完成写入。

这种原子性主要是表级提交能力,不能直接推导为跨多表或跨外部系统事务。具体更新、删除、隔离级别和引擎兼容性还取决于表格式版本、引擎和配置。

相比传统表布局的收益与成本

Iceberg 支持 Schema 演进、隐藏分区与分区布局演进,减少查询对物理目录的依赖;快照支持时间旅行和恢复,但旧快照依赖的文件必须仍然保留。文件和元数据也需要合并、快照过期及孤儿文件清理,不能无限积累小文件。

它适合需要开放存储、多引擎访问和持续演进的分析场景;并不自动获得所有传统 MPP 数仓的低延迟、高并发服务、资源管理或完整治理能力。

常见追问

Copy-on-Write 与 Merge-on-Read 有何区别? COW 通常在更新时重写受影响数据文件,读取相对直接;MOR 通过新增数据/删除信息把部分合并工作移到读取,写入较轻但读取和后续整理有额外成本。实际能力需核对格式与引擎版本。

参考资料

相关面经

4 篇

中邮消费金融

数据开发
查看原面经 →
Iceberg是否支持事务?

联友科技

数据开发
秋招
查看原面经 →
你提到Iceberg,Iceberg属于数据湖吗?讲一下数据湖和传统Hadoop数仓的区别。

美团

AI 数据开发工程师
秋招一面
查看原面经 →
介绍一下Iceberg。
追问
Iceberg解决了传统Hive的哪些问题?
追问
还有哪些没有覆盖?

OPPO

数据开发工程师
秋招一面
查看原面经 →
讲讲Iceberg表原理,和传统数仓区别?

相关题目

4 题