Delta Lake:一种新型的数据湖方案

5月15日【Delta Lake:一种新型的数据湖方案】

讲师:辛庸,阿里巴巴计算平台事业部 EMR 技术专家。Apache Hadoop,Apache Spark contributor。对 Hadoop、Spark、Hive、Druid 等大数据组件有深入研究。目前从事大数据云化相关工作,专注于计算引擎、存储结构、数据库事务等内容。

内容简介:Delta Lake 是 Databricks 推出的一种新型的数据湖方案,解决了传统数据湖方案中的诸多痛点。其中的核心组件 Delta 也于近期开源。本次分享将围绕 Delta Lake 和 Delta 的诸多细节展开,如 Delta Lake 的适用场景、技术优势,Delta 的原理实现以及一些高级特性等,并就现有解决方案做横向对比。


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

展开查看详情

1.Delta Lake:⼀一种新型的数据湖⽅方案 ⾟辛庸 2019-05-15

2.⽬目录 • Delta Lake • 应⽤用场景 • Delta 原理理与实现 • 竞品分析 • 参考⽂文献

3.⽬目录 ➡ Delta Lake • 应⽤用场景 • Delta 原理理与实现 • 竞品分析 • 参考⽂文献

4.Delta Lake • 什什么是 Delta?什什么是 Delta Lake? Data Lake Delta Lake Analytic Analytic Engine Engine Delta HDFS S3/OSS … HDFS S3/OSS …

5.Delta Lake Data Warehouse Data Lake Delta Lake 架构 计算存储⼀一体/分离 计算存储分离 计算存储分离 存储管理理 严格、⾮非通⽤用 原⽣生格式 通⽤用格式,轻量量级 场景 报表、分析 报表、分析、数据科学 报表、分析、数据科学 灵活性 低 ⾼高 较⾼高 数据质量量/可靠性 很⾼高 低 较⾼高 事务性 ⽀支持 不不⽀支持 ⽀支持 性能 ⾼高 低 较⾼高 扩展性 依赖于具体实现 ⾼高 ⾼高 ⾯面向⼈人员 管理理⼈人员 管理理⼈人员、数据科学家 管理理⼈人员、数据科学家 成本 ⾼高 低 低

6.Delta Lake • Data Lake • Delta Lake • 读写并发,数据不不可靠 • ACID 事务 • 数据质量量较低 • Schema 管理理与校验,数据校验 • 性能较低 • Data skipping, Z-ordering • ⽆无法更更新/删除记录 • ⽀支持更更新删除

7.Delta Lake • Data Lake • Delta Lake • 读写并发,数据不不可靠 • ACID 事务 • 数据质量量较低 • Schema 管理理与校验,数据校验 • 性能较低 • Data skipping, Z-ordering • ⽆无法更更新/删除记录 • ⽀支持更更新删除 • 可伸缩的元数据管理理 • 数据版本控制、历史穿梭 • 流批统⼀一 • Exactly-Once

8.⽬目录 • Delta Lake ➡ 应⽤用场景 • Delta 原理理与实现 • 竞品分析 • 参考⽂文献

9.应⽤用场景 — 端到端数据管道 • 任务:构建 IoT 设备的数据管道 • Batch Events Analysis/ML • 实时性差 OSS • Partition 过多 • 避开业务⾼高峰 Analysis/ML • Streaming to OSS OSS • ⼩小⽂文件 • 数据可靠性 • 读写冲突 • 数据丢失/重复

10.应⽤用场景 — 端到端数据管道 • Streaming to Delta • 实时性好 • 数据可靠 • ⽀支持事务 Analysis/ML Delta • 读写隔离 • 删除/更更新 • Exactly-Once Delta 数据管道:重量量级批式 ETL -> 轻量量级流式 ETL

11.应⽤用场景 — ML 调试 • 任务:构建分类模型 • 防⽌止过拟合 • 结果复现 • Bad case 分析 Delta Train3 Snapshot3 Model3 Result3 Train2 Snapshot2 Model2 Test Data Result2 Train1 Snapshot1 Model1 Result1

12.应⽤用场景 — 数据湖数据快速分析 • 任务:Data Lake 之上的快速分析 • Delta • Data Skipping • Z Ordering Analysis OSS

13.应⽤用场景 — 其他 • 业务模型变化 • Schema 演化 • 流批结合保障业务⾼高可靠 • 以流为主,但流可能会挂掉

14.⽬目录 • Delta Lake • 应⽤用场景 ➡ Delta 原理理与实现 • 竞品分析 • 参考⽂文献

15.Delta 原理理 • 记录每⼀一个⽂文件变动,形成新的 快照版本 OP1 OP2 OP3 • 满⾜足事务性 • 历史是线性的 S1 S2 S3 … • 历史可回溯

16.Delta 原理理 add remove DeltaLog1 DeltaLog2 DeltaLog3 DeltaLog4 File3 File2 File1 File2 File1 File3 File3 File3 File2 File2 File2 File1 File1 File1 File1 • ⼩小⽂文件 vs ⼤大⽂文件?

17.Delta 原理理 — 数据组织 Files Layout • 数据⽂文件以 partition 组织 ————————————————————————————————————————————————————————— /path/to/delta/base • 元数据⽬目录 /_checkpoint / • 检查点⽬目录 /_delta_log /00000000000000000000.json • 优点:原 spark/hive 数据可直接 /00000000000000000001.json /... CONVERT 为 delta table /part=0 /part-<taskId>-<jobId>-c<bucketId>.snappy.parquet /... /part=1 /part-<taskId>-<jobId>-c<bucketId>.snappy.parquet /... ...

18.Delta 原理理 — 元数据管理理 Delta Log Content Supported Operations • 元数据可扩展 ————————————————————————————————————————— —————————————————————————— CommitInfo: WRITE/ • 元数据校验 version/timestamp/ STREAMING UPDATE DELETE/TRUNCATE operation/ • 丰富功能 operationParameters, MERGE/UPDATE FSCK/CONVERT Protocol OPTIMIZE • 统计信息 minReadVersion/minWriteVersion CTAS Metadata SET TBLPROPERTIES id/format/ UNSET TBLPROPERTIES schemaString/ ADD COLUMNS CHANGE COLUMN partitionColumns/ RELACE COLUMNS configuration/ UPGRADE PROTOCOL createtime MANUAL UPDATE Txn FILE NOTIFICATION RETENTION appId/version/lastUpdate UPDATE COLUMN METADATA Files COMPUTE STATS RESET ZCUBE INFO add{path,partitionValue,size…}/ UPDATE SCHEMA delete{path,partitionValue,size…}

19.Delta 原理理 — ACID 事务 • 乐观机制 开启事务1 写⼊入数据 提交事务1 Delta Log 1 vs 2 开启事务2 写⼊入数据 提交事务2 • 适⽤用于并发不不⾼高场景 • 缺点 • 优点 • 锁粒度较粗 • 简单 • Update 写放⼤大 • 失败重做

20.Delta 原理理 — 读写流程 Datasource Datasource .createRelation .createRelation 创建 delta log 对象 检测是否为快照读 写⼊入数据到 delta 获取相应 delta log 开启事务 schema 标准化 创建并返回 Relation 写⼊入数据 数据校验 提交事务 数据写⼊入 创建并返回 Relation

21.Delta 原理理 — Data Skip & Z-Order Data Skipping Z Order Clustering Spark Plan l ta D e ks b r ic Delta Log a ta File Index D Row Order Hilbert Curve Z-Order File Level Stats • ⼀一种空间曲线填充⽅方法(空间参数化⽅方法) File1 File2 … • 在多维空间中聚集的空间实体,经过填充曲 Delta 线编码以后,在⼀一维空间中仍然是聚集的。 Databricks: Delta can speed up your queries by as much as 100X.

22.⽬目录 • Delta Lake • 应⽤用场景 • Delta 原理理与实现 ➡ 竞品分析 • 参考⽂文献

23.竞品分析 — Hive 事务表 Files Layout • 截然不不同的 ‘Table Format’ Metadata ———————————————————————————————— ———————————————————————————————— /part/to/table/base Valid txns • 事务悲观机制 /part=1 Valid write ids /base_000000 Locks • metadata 扩展性有限 /bucket_00000 FileFormat ———————————————————————————————— • 侵⼊入式改动⽂文件格式,不不具有 /... | original write id /delta_00001_00001 移植性 Meta columns | bucket id /bucket_00000 | row id • scan 表时需要 list ⽂文件 /... ———————————————————————————————— Version | current write id /delete_delta_00002_00002 • 统计信息更更新问题 /bucket_00000 ———————————————————————————————— User columns | col1 /... | ... ———————————————————————————————— /part=2 /...

24.竞品分析 — Iceberg • ⾮非常类似的解决⽅方案 • 代码更更为成熟 • 功能更更为完备 • ⾃自带 Catalog,⽀支持 Namespace • Parquet/Orc • Spark/Pig/[Presto] • Python API • …

25.⽬目录 • Delta Lake • 应⽤用场景 • Delta 原理理与实现 • 竞品分析 ➡ 参考⽂文献

26.参考⽂文献 • Introduction to Delta Lake, https://docs.databricks.com/delta/delta-intro.html#resources • Open Sourcing Delta Lake, https://databricks.com/blog/2019/04/24/open-sourcing-delta- lake.html • Processing Petabytes of Data in Seconds with Databricks Delta, https://databricks.com/blog/ 2018/07/31/processing-petabytes-of-data-in-seconds-with-databricks-delta.html • Delta Source Code, https://github.com/delta-io/delta.git • Iceberg: A modern table format for big data, https://www.slideshare.net/kbajda/presto- summit-2018-09-netflix-iceberg

27.Q&A

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