是时候改变你数仓的增量同步方案了

议题:
是时候改变你数仓的增量同步方案了

简介:
本分享会先介绍传统数据增量同步方案,之后对比新方案(完全基于Spark无需额外组件),介绍新方案如何结合最新的数据湖(delta lake)实现,同时引入spark-binlog,极大的简化了数据增量的门槛和架构。如果时间允许,我们也会简单介绍开源项目spark-binlog,delta-plus等的内部设计是如何支持我们新的数据增量方案的。

讲师:
祝威廉,资深数据架构,11年研发经验。同时维护和开发多个开源项目。擅长大数据/AI领域的一些思路和工具。现专注于构建集大数据和机器学习于一体的综合性平台,降低AI落地成本相关工作上。

时间:
2019年12月5日 19:30-20:30


阿里巴巴开源大数据EMR技术团队成立Apache Spark中国技术社区,定期打造国内Spark线上线下交流活动。请持续关注。
钉钉群号:21784001
团队群号:HPRX8117
微信公众号:Apache Spark技术交流社区

展开查看详情

1.是时候改变你数仓的增 量同步⽅案了 MLSQL Stack 系列

2. 分享内容 Stage1: Stage2: Stage3: 传统增量同步⽅案 基于Delta Lake新⽅案 新⽅案组件内部设计

3.传统增量同步⽅案

4.

5.优点 基本⽆

6. 缺点 • 组件繁多(构建成本⾼) • 每个组件都需要⼀个专家(⼈⼒成⾼) • 环节多,还涉及到数据的倒⼊导出 (延时⾼) • 传说中的Lambda架构?

7. Lambda架构 ⽤架构的复杂弥补存储不给⼒

8.⼀个最直观的架构

9.上⾯就是新⽅案

10.代码直观感受 配置MySQL信息 配置存储信息

11. (可能)N⼈N天 (可能)1⼈⼏分钟

12. 要解决的问题 • Spark需要能够直接消费Binlog • HDFS的存储需要⽀持Upsert/Partial Upsert • ⼀段Replay 的逻辑

13.我们通过MLSQL演示

14.Spark-Binlog技术细节

15.Spark-Binlog 架构

16. Spark-Binlog流程 • 任意选择⼀个Exeuctor启动⼀个常驻的MySQL Slave • 将消费到的Binlog转化为数据并且⽣成WAL写⼊HDFS • 在Executor启动⼀个服务,提供对WAL的读取(满⾜Spark数 据源需要回放的问题) • 流式程序向该服务pull数据

17.Delta-Plus 技术细节

18. 要解决的问题 • 原⽣Delta更新放⼤的问题 • ⽂件数控制 • 不同类型的更新问题

19. 原⽣Delta更新放⼤的问题 • 每次更新都需要发⽣全表扫描 • 每次更新都需要删除、新增⼤量⽂件 • 极端情况是重新⽣成整张表

20. 解决办法 • 通过布隆过滤器,不需要join就能过滤掉不需要的⽂件 • 对数据根据主键组区间进⾏分区,保证每个⽂件⾥的数据都 在⾃⼰的区间内

21. ⽂件数控制 • Delta-Plus通过更新逻辑,可以确保⽂件数恒定,删多少⽂ 件,就新增多少⽂件

22. 不同类型的更新问题 • Partial Merge • Replace

23. 它们都是开源项⽬ • spark-binlog: https://github.com/allwefantasy/spark-binlog • delta-plus: https://github.com/allwefantasy/delta-plus

24. 欢迎关注MLSQL 官⽹地址: http://www.mlsql.tech 知乎地址: https://zhuanlan.zhihu.com/c_205546986

阿里巴巴开源大数据EMR技术团队成立Apache Spark中国技术社区,定期打造国内Spark线上线下交流活动。请持续关注。 钉钉群号:21784001 团队群号:HPRX8117 微信公众号:Apache Spark技术交流社区
关注他