Delta Architecture

Delta Lake + Apache Spark Structured Streaming

数据工程师的纠结与运维的凌乱
• Delta Lake基本原理
• Delta 架构
• Delta 架构的特性
• Delta 架构的经典案例 & Demo
• Delta Lake 社区

展开查看详情

1.The Delta Architecture Delta Lake + Apache Spark Structured Streaming 李潇 (@gatorsmile) 2019 Oct. @ Shanghai

2.自我介绍 • Tech Lead and Engineering Manager at Databricks • Apache Spark Committer and PMC Member • Previously, IBM Master Inventor • Spark, Database Replication, Information Integration • Ph.D. in University of Florida • Github: gatorsmile

3.Delta Lake Joins the Linux Foundation! +

4.

5. Dominique Brezinski (Apple Inc.) Michael Armbrust (Databricks) 启程 亮相 Spark + AI Summit 2017/06 2017/10 2018/06 2019/04 2019/10 宣布 开源

6. • 数据工程师的纠结与运维的凌乱 目录 • Delta Lake 基 本 原 理 • Delta 架 构 • Delta 架 构 的 特 性 • Delta 架 构 的 经 典 案 例 & Demo • Delta Lake 社区

7. 项 目 经 理 如 是 说, Process data continuously and incrementally as new data arrive in a cost efficient way without having to choose between batch or streaming 数据工程师

8. 项 目 经 理 如 是 说, Process data continuously and incrementally as new data arrive in a cost efficient way without having to choose between batch or streaming 数 据 工 程 师 的 第 一 份 架 构 草 图, Kinesis CSV, AI & Reporting JSON, TXT… Data Lake

9. 数据工程师的第二份方案 Events Stream Stream Table AI & Reporting (Data gets written continuously) Spark 作 业 由 于 小 文 件 太 多导致不断变慢

10. 数据工程师的第三份方案 Events Stream 额外的压缩导致延迟 Batch Batch Table AI & Reporting Table (Data gets written continuously) 每小时定期 压缩数据

11. 数据工程师的第三份方案 Events Stream 业务不接受 超过1小时的延迟 Batch Batch Table AI & Reporting Table (Data gets written continuously) 每小时定期 压缩数据

12. 数据工程师的第四份方案 Events Stream Stream Unified View Lambda 架 构 大幅增加 运营负担 Batch Batch Table 每小时定期 (Data gets written continuously) 压缩数据

13. 数据工程师的第五份方案 Events Stream Stream Unified View AI & Reporting 数据验证 验证与其他 数据清理需 要批流各做 Batch Batch 一遍 Table 每小时定期 (Data gets written continuously) 压缩数据

14. 数据工程师的第六份方案 Events Stream Stream Unified View AI & Reporting 数据验证 验证后的纠 错意味某些 Partition 需 Batch Batch 要重新处理 Table 每小时定期 (Data gets written continuously) 重新处理 压 缩 数 据

15. 数据工程师的第七份方案 Events Stream Stream Unified View AI & Reporting 数据验证 数据湖的 Update / Merge 异 常 Batch Batch 复杂 Table 每小时定期 (Data gets written 压 缩 数 据 Update / Merge continuously) 重新处理

16. 数据工程师的第七份方案 架 构 Events b d a La m Stream 奔 研 究 大 普 苦 心 Stream , 喜 Unified View 发 AI & Reporting 数据验证 年 研 数据湖的 半 Update / 过 Merge 异 常 经 Table (Data gets written Batch 每小时定期 正式上线! Batch 复杂 压 缩 数 据 Update / Merge continuously) 重新处理

17. Diff Con 数据工程师的第七份 e ren方 案 cat t fie en ate ld t s n g yp e m a a m e lo a d i s c ll Events o w d a ta f r au s f il e t re m e ly s l e s s E x t io n s c o n at Stream a O p e r a f lic o n M e t ad t in d s B l o c k e d g s c Co m m a n 坑 爹 ven E h em H t u a o w a l Stream N o t F o u n d t o Unified C View o AI & Reporting e t t in g F ile 数 据 验 证 c o n s K e e p g n t rol 数 is据te湖 的 num n c y jo b re s u lt s b Update / ! ! ! c o n s is t e n t e r o Merge 异 常 IC A L : in f CRIT Batch Batch pa复r 杂 q s u e s ? ? ? u e t Table s h T每小 a b l 时 e Is 定 期 f il 骂 娘 (Data gets written R e f re 压 缩 数 据 Update / Merge e s 想 continuously) 重新处理 ?

18. 面 对 Lambda 架 构,运 维 工 程 师 凌 乱 了 。。。 Events Stream Stream Unified View AI & Reporting 数据验证 数据湖的 Update / Merge 异 常 Batch Batch 复杂 Table 每小时定期 (Data gets written 压 缩 数 据 Update / Merge continuously) 重新处理

19. 面 对 Lambda 架 构,运 维 工 程 师 凌 乱 了 。。。 急 ! Events 何 太 Stream 相 煎 力 , 易 , , 费 钱 费 统 局 已 Stream 不 此 方 案 了 解 决 系 取 价 值 维 数 据 验 证 评: Unified View 到 抽 AI & Reporting 费 中 运 砖 将 家 大 点 好 时 不 光 是 浪 去 从 数 据 数据湖的 Update / , 而 Merge 异 常 Batch 限 Batch 复杂 Table 每小时定期 (Data gets written 压 缩 数 据 Update / Merge continuously) 重新处理

20. 项 目 经 理 如 是 说, Process data continuously and incrementally as new data arrive in a cost efficient way without having to choose between batch or streaming 数 据 工 程 师 的 第 一 份 架 构 草 图, Kinesis ? CSV, AI & Reporting 到底最初的方案, 哪里错了??? JSON, TXT… Data Lake 为何选择复[ keng ] 杂[ die ] 的 Lambda 架构!!!

21. Kinesis ? CSV, AI & Reporting ?到底缺了什么? JSON, TXT… Data Lake 1)同 时 读 写, 并 且 要 保 证 数 据 的 一 致 性 2)可 以 高 吞 吐 从 大 表 读 数 据 3)遇 到 错 误 写 出 可 以 回 滚 和 删 改 4)在 线 业 务 不 下 线 的 同 时 可 以 重 新 处 理 历 史 数 据 5)处 理 迟 到 数 据 而 无 需 推 迟 下 阶 段 的 数 据 处 理

22. Delta Structured + = 架构 Streaming • 批流合并,持续数据处理 • 按需随时可重新处理历史事件 • 独立且弹性扩展计算和存储资源

23.Delta Lake 的 基 本 原 理

24.Delta On Disk my_table/ Transaction Log _delta_log/ Table Versions 00000.json 00001.json (Optional) Partition Directories date=2019-01-01/ Data Files file-1.parquet

25.Table = result of a set of actions Action Types • Change Metadata – name, schema, partitioning, etc. • Add File – adds a file (with optional statistics) • Remove File – removes a file Result: Current Metadata, List of Files, List of Txns, Version

26.Atomicity 的 实 现 Changes to the table are stored as ordered, atomic units called commits Add 1.parquet 000000.json Add 2.parquet 000001.json Remove 1.parquet 。。。 Remove 2.parquet Add 3.parquet

27. 乐观并发控制 1. Record start version 2. Record reads/writes Read: Schema Read: Schema 3. Attempt commit, check Write: Append Write: Append for conflicts among User 1 000000.json User 2 transactions 000001.json 4. If someone else wins, check if anything you 000002.json read has changed. 5. Try again.

28. 大 规 模 元 数 据 的 处 理 – Use Spark!!! 上百万的commit log files! 如果解决海量元数据处理 ? Add 1.parquet Checkpoint Add 2.parquet Remove 1.parquet Remove 2.parquet Add 3.parquet

29.Delta 架 构