整体概述
传统的数据管理方式(如Hive)使用目录级别的数据表,存在效率低下、安全性不足、性能较差等问题。Iceberg作为一种新的数据管理方案,旨在解决这些问题,实现表的正确性与一致性、更快的查询执行、无需用户感知物理结构、性能提升,以及在大规模数据上实现以上目标。
Iceberg是什么
Iceberg是一种存储引擎、Table Format规范、计算引擎API和库,以及配套服务。其数据流图展示了批流一体的存储逻辑架构。
应用探索
-
流数据接入
- 基于水位线的自定义提交:通过设置
sink.partition-commit.delay和sink.partition-commit.trigger,实现数据的累积提交。
- 基于水位线的延迟数据处理:时效较低的数据进行累积,达到一定量后再提交,提高处理效率。
-
类Git式的数据管理
- 支持周期稳定快照、重要历史快照和实验分支,类似Git的版本控制。
- 全量表改造:通过元数据关联部分列信息,支持列更新,无需重写全表。
-
使用Puffin完成初步的索引应用
- Puffin是一种文件格式,存储统计信息和索引,进一步提升性能。支持多种blob类型,如
apache-datasketches-theta-v1,加速关联、点查等场景。
-
不止于Table Format
- 提供良好的业务使用体验和极低的维护成本,支持多种存储、计算引擎。
- 数据湖服务:配套实时数据湖仓,提升查询性能、可视化、运维监控能力,包括服务规则引擎和告警规则引擎。
-
基于File IO的对象存储优势
-
隐藏分区
- 更新分区规范纯粹是元数据操作,无需重写数据,快速简单。查询时引擎自动拆分工作,支持增量变更。
- 可通过
rewriteDataFiles过程重写旧数据进行压缩和排序。
如何无缝迁移到Iceberg
仅需三步:
- 添加IcebergRuntime包。
- 自动生成快照表用于验证。
- 验证后升级原表到Iceberg(原表加
Backup后缀)。