- 快召唤伙伴们来围观吧
- 微博 QQ QQ空间 贴吧
- 视频嵌入链接 文档嵌入链接
- 复制
- 微信扫一扫分享
- 已成功复制到剪贴板
是时候改变你数仓的增量同步方案了
议题:
是时候改变你数仓的增量同步方案了
简介:
本分享会先介绍传统数据增量同步方案,之后对比新方案(完全基于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