更新时间:2026-06-08 GMT+08:00
分享

Iceberg

Iceberg原理介绍

Iceberg是一种开放的数据湖表格式,可以基于Iceberg快速地在HDFS或OBS上构建自己的数据湖存储服务。

图1 Iceberg基本架构

Iceberg该功能当前处于公测阶段,如需使用请提交工单申请开通。

如需使用Iceberg,请确保MRS集群内已安装Spark服务。

Iceberg特性

Iceberg具有如下特性:

  • 构建于存储格式之上的数据组织方式
  • 提供ACID能力,支持事务特性和并发能力
  • 提供行级别的数据修改能力
  • 支持Schema演进功能
  • 支撑分区演进功能
  • 支持隐式分区功能
  • 支持历史版本回溯功能

Iceberg关键技术和优势

  • 关键技术
    • 强事务性支持,保障数据一致性

      实现了ACID事务,支持并发的读、写、删除操作,解决了传统数据湖 “写时不可读、读时不可写” 的问题。

    • 提供快照机制

      每次数据变更都会生成新快照,支持时间旅行,即可以查询任意历史版本的数据,方便数据回溯、审计和故障恢复。

    • 支持原子性的分区演化

      可安全地新增、删除或修改分区字段,无需全表重写,避免数据不一致风险。

  • 计算优势
    • 灵活的分区与布局优化,提升查询性能
      • 隐式分区:分区字段与表结构融为一体,用户无需感知分区路径,直接通过SQL过滤分区字段即可,简化查询逻辑。
      • 分区演进:支持动态调整分区策略,例如从按 “天” 分区改为按 “小时” 分区,无需重建表或迁移数据。
      • 数据布局优化:内置分桶、排序能力,可根据查询模式优化数据文件的物理存储,减少查询时的IO开销;同时支持重写数据文件操作,合并小文件、拆分大文件,避免 “小文件风暴”。
    • 开放兼容的生态,适配多引擎与多平台
      • 支持多计算引擎:原生兼容Spark、Flink、HetuEngine等主流计算引擎,同一张Iceberg表可被不同引擎同时读写,打破引擎间的壁垒。
      • 适配多存储系统:支持HDFS、OBS、S3等各类对象存储和分布式文件系统,无需绑定特定存储平台。
      • 开放标准与社区:作为Apache顶级项目,采用开放的表格式规范,避免厂商锁定,社区活跃且持续迭代功能。
    • 精细化的元数据管理,简化数据治理
      • 中心化元数据:将表的元数据(模式、分区、快照、文件列表等)存储为结构化文件,而非依赖Hive Metastore等外部组件,元数据查询更高效。
      • Schema演化:支持灵活的表结构变更,包括新增列、删除列、重命名列、修改列类型等,变更无需全表扫描或重写,且对历史数据兼容。
      • 数据生命周期管理:内置过期快照清理、数据文件归档等能力,结合快照机制可实现自动化的数据留存与清理策略。

相关文档