Amoro Mixed Format 适用场景及原理解析

01 背景

大家好,我是 Amoro 社区的竹堂。我们团队从2019年开始调研包括 Apache Iceberg、Apache Hudi 等一类数据湖新型表格式。当时的初衷是为实时计算寻找一种新型的存储方案,基于它为业务打造一套具有流批一体和湖仓一体特性的大数据存储方案。

团队最终选择了 Apache Iceberg,并且基于它在内部进行了大量的实践。在实践过程中,我们逐渐发现有一些场景直接使用 Apache Iceberg 将较难满足用户的需求,所以我们在 Apache Iceberg 的基础上设计并实现了 Mixed-Iceberg 和 Mixed-Hive 两种新的表格式,它们继承了 Apache Iceberg 的所有功能特性,并在实时场景下进行了一些优化和功能补充,使得能够更好地满足部分场景的需求。设计实现过程中我们坚持不修改 Apache Iceberg 表格式的结构,只在上层进行封装扩展,以使得 Mixed Format 具备较好的兼容性。

为了更加方便地使用 Apache Iceberg 与 Mixed Format 格式的表,团队研发了湖仓管理平台 Amoro,并在2022年将它开源。作为湖仓管理平台,Amoro 汇总了数据湖中所有表的元信息,基于此再以插件的方式扩展各种管理功能,包括自动的文件合并、数据清理等。管理功能方面 Amoro 对 Apache Iceberg 和 Mixed Format 做了同样的支持,而 Mixed Format 作为 Apache Iceberg 在一些功能上的补充满足更多实时场景的需求。

02 Mixed Format 的适用场景

如 Amoro 用户手册(https://amoro.netease.com/docs/latest/#user-cases)中所说,当前使用 Amoro 构建湖仓一体架构的的主要用户场景包括:

  • 实时湖仓:将包括数据库 CDC、业务日志、传感器数据等源端数据实时写入数据湖中,在之上进行数据分析或进一步数据加工。

  • 流批一体:统一实时与离线数据存储,使用实时计算完成数据分层加工,降低数据延迟,离线按需进行数据修正。

  • 云原生湖仓:基于对象存储、容器化等云原生技术搭建数据仓库,提供弹性扩展、价格低廉的湖仓服务。

Apache Iceberg 和 Mixed Format 都可以应用到三个场景下,Mixed Format 在实时湖仓和流批一体场景下做了更多优化。

实时湖仓

在实时湖仓场景下, Apache Iceberg 解决了以往 Apache Hive 不支持实时更新的问题,简化了数据摄入链路,降低了数据延迟。在这个场景下,Mixed Format 在 Apache Iceberg 之上还做了下面的优化:

更强的主键约束

当前 Apache Iceberg 只在 Flink 引擎内支持了主键定义,Mixed Format 在 Spark 引擎内也扩展了主键定义,并且无论是通过 Flink 还是 Spark 写入数据,都能保证数据在主键上的唯一性。

Merge-On-Read 性能优化

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值