目前现状

现有架构缺点

目前大多数数仓架构都是Lambda架构,Lambda 架构下,数仓的缺点:

  • 同样的需求,开发和维护两套代码逻辑:批和流两套逻辑代码都需要开发和维护,并且需要维护合并的逻辑,且需同时上线;
  • 计算和存储资源占用多:同样的计算逻辑计算两次,整体资源占用会增多;
  • 数据具有二义性:两套计算逻辑,实时数据和批量数据经常对不上,准确性难以分辨;
  • 重用 Kafka 消息队列:Kafka 保留往往按照天或者月保留,不能全量保留数据,无法使用现有的 adhoc (点对点)查询引擎分析。

新一代数据湖特性

目前常见数据湖有Apache Iceberg、及Apache Hudi ,本文以Hudi介绍为主

  • Update / Delete 记录:Hudi 使用细粒度的文件/记录级别索引,来支持 Update / Delete 记录,同时还提供写操作的事务保证,支持 ACID 语义。查询会处理最后一个提交的快照,并基于此输出结果;
  • 变更流:Hudi 对获取数据变更提供了流的支持,可以从给定的时间点获取给定表中已 updated / inserted / deleted 的所有记录的增量流,可以查询不同时间的状态数据;
  • 技术栈统一:可以兼容我们现有的 adhoc 查询引擎 presto,spark。
  • 社区更新迭代速度快:已经支持 Flink 两种不同方式的的读写操作,如 COW 和 MOR。

参考链接

  • 基于 Apache Hudi 构建实时数据湖在百信银行的实践

https://mp.weixin.qq.com/s/teFKWFYFbyD1yM2d1uyh-g

  • Apache Hudi核心概念一网打尽

https://zhuanlan.zhihu.com/p/364016306