SlideShare uma empresa Scribd logo
1 de 75
Baixar para ler offline
The Delta Architecture
Delta Lake + Apache Spark Structured Streaming
李潇 (@gatorsmile)
2019 Oct. @ Shanghai
自我介绍
• 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
+
Delta Lake Joins the Linux Foundation!
2017/10 2018/06 2019/042017/06
启程
宣布
亮相
Spark + AI
Summit
开源
Dominique Brezinski (Apple Inc.)
Michael Armbrust (Databricks)
2019/10
目录 • 数据工程师的 纠结与运维的凌乱
• Delta Lake 基本原理
• Delta 架构
• Delta 架构的特性
• Delta 架构的经典案例 & Demo
• Delta Lake 社区
Process data continuously and incrementally as new data arrive in a
cost efficient way without having to choose between batch or streaming
项 目 经 理 如 是 说,
数 据 工 程 师
Data Lake
CSV,
JSON, TXT…
Kinesis
AI & Reporting
Process data continuously and incrementally as new data arrive in a
cost efficient way without having to choose between batch or streaming
项 目 经 理 如 是 说,
数 据 工 程 师 的 第 一 份 架 构 草 图,
Table
(Data gets written
continuously)
AI & Reporting
Events
Spark 作 业 由 于 小 文 件 太
多 导 致 不 断 变 慢
Stream
Stream
数 据 工 程 师 的 第 二 份 方 案
Events
额 外 的 压 缩 导 致 延 迟
Stream
Table
(Data gets written
continuously)
每 小 时 定 期
压 缩 数 据
数 据 工 程 师 的 第 三 份 方 案
AI & ReportingTable
BatchBatch
AI & ReportingTable
Batch
Events
业 务 不 接 受
超 过 1 小 时 的 延 迟
Stream
Table
(Data gets written
continuously)
Batch
每 小 时 定 期
压 缩 数 据
数 据 工 程 师 的 第 三 份 方 案
Table
(Data gets written
continuously)
Stream
Unified ViewStream
Events
Lambda 架 构
大 幅 增 加
运 营 负 担
Batch Batch
每 小 时 定 期
压 缩 数 据
数 据 工 程 师 的 第 四 份 方 案
Table
(Data gets written
continuously)
AI & Reporting
Stream
Unified ViewStream
Events
验 证 与 其 他
数 据 清 理 需
要 批 流 各 做
一 遍Batch Batch
数 据 验 证
每 小 时 定 期
压 缩 数 据
数 据 工 程 师 的 第 五 份 方 案
Table
(Data gets written
continuously)
AI & Reporting
Stream
Unified ViewStream
Events
每 小 时 定 期
压 缩 数 据
验 证 后 的 纠
错 意 味 某 些
Partition 需
要 重 新 处 理Batch Batch
数 据 验 证
重 新 处 理
数 据 工 程 师 的 第 六 份 方 案
Table
(Data gets written
continuously)
AI & Reporting
Stream
Unified ViewStream
Events
每 小 时 定 期
压 缩 数 据
数 据 湖 的
Update /
Merge 异 常
复 杂Batch Batch
数 据 验 证
重 新 处 理
Update / Merge
数 据 工 程 师 的 第 七 份 方 案
Table
(Data gets written
continuously)
AI & Reporting
Stream
Unified ViewStream
Events
每 小 时 定 期
压 缩 数 据
数 据 湖 的
Update /
Merge 异 常
复 杂Batch Batch
数 据 验 证
重 新 处 理
Update / Merge
数 据 工 程 师 的 第 七 份 方 案
经过半年研发,喜大普奔
苦心研究Lambda 架构
正式上线!
Table
(Data gets written
continuously)
AI & Reporting
Stream
Unified ViewStream
Events
每 小 时 定 期
压 缩 数 据
数 据 湖 的
Update /
Merge 异 常
复 杂Batch Batch
数 据 验 证
重 新 处 理
Update / Merge
数 据 工 程 师 的 第 七 份 方 案
Extremely slow dataframe loading
Commands Blocked on Metadata Operations
Keep getting FileNotFound
CRITICAL: inconsistent job results
Different field types causes conflicting schema
Refresh Table Issues???
Concatenate small files
How to control number of parquet files ?
Eventual Consistency !!!
坑爹
想骂娘
Table
(Data gets written
continuously)
AI & Reporting
Stream
Unified ViewStream
Events
每 小 时 定 期
压 缩 数 据
数 据 湖 的
Update /
Merge 异 常
复 杂Batch Batch
数 据 验 证
重 新 处 理
Update / Merge
面 对 Lambda 架 构,运 维 工 程 师 凌 乱 了 。。。
Table
(Data gets written
continuously)
AI & Reporting
Stream
Unified ViewStream
Events
每 小 时 定 期
压 缩 数 据
数 据 湖 的
Update /
Merge 异 常
复 杂Batch Batch
数 据 验 证
重 新 处 理
Update / Merge
运维已不易,相煎何太急!
面 对 Lambda 架 构,运 维 工 程 师 凌 乱 了 。。。
砖家点评:此方案,费钱费力,
将大好时光浪费到了解决系统局
限,而不是去从数据中抽取价值
Data Lake
CSV,
JSON, TXT…
Kinesis
AI & Reporting
Process data continuously and incrementally as new data arrive in a
cost efficient way without having to choose between batch or streaming
项 目 经 理 如 是 说,
数 据 工 程 师 的 第 一 份 架 构 草 图,
?
到底最初的方案,哪里错了???
为何选择复[ keng ] 杂[ die ] 的 Lambda 架构!!!
1)同 时 读 写, 并 且 要 保 证 数 据 的 一 致 性
2)可 以 高 吞 吐 从 大 表 读 数 据
3)遇 到 错 误 写 出 可 以 回 滚 和 删 改
4)在 线 业 务 不 下 线 的 同 时 可 以 重 新 处 理 历 史 数 据
5)处 理 迟 到 数 据 而 无 需 推 迟 下 阶 段 的 数 据 处 理
Data Lake
CSV,
JSON, TXT…
Kinesis
AI & Reporting
?
?到底缺了什么?
+ =
Delta
架 构
• 批流合并,持续数据处理
• 按需随时可重新处理历史事件
• 独立且 弹性扩展计算和存储资源
Structured
Streaming
Delta Lake 的 基 本 原 理
Delta On Disk
Transaction Log
Table Versions
(Optional) Partition Directories
Data Files
my_table/
_delta_log/
00000.json
00001.json
date=2019-01-01/
file-1.parquet
Action Types
• Change Metadata – name, schema, partitioning, etc.
• Add File – adds a file (with optional statistics)
• Remove File – removes a file
Table = result of a set of actions
Result: Current Metadata, List of Files, List of Txns, Version
Changes to the table are stored as ordered, atomic
units called commits
Add 1.parquet
Add 2.parquet
Remove 1.parquet
Remove 2.parquet
Add 3.parquet
000000.json
000001.json
。。。
Atomicity 的 实 现
1. Record start version
2. Record reads/writes
3. Attempt commit, check
for conflicts among
transactions
4. If someone else wins,
check if anything you
read has changed.
5. Try again.
乐 观 并 发 控 制
000000.json
000001.json
000002.json
User 1 User 2
Write: Append
Read: Schema
Write: Append
Read: Schema
上百万的commit log files! 如果解决海量元数据处理?
大 规 模 元 数 据 的 处 理 –UseSpark!!!
Add 1.parquet
Add 2.parquet
Remove 1.parquet
Remove 2.parquet
Add 3.parquet
Checkpoint
Delta 架 构
Data Lake
CSV,
JSON, TXT…
Kinesis
AI & Reporting
?
1)同 时 读 写, 并 且 要 保 证 数 据 的 一 致 性 (Full ACID Transaction)
Snapshot isolation between writers and readers. Focus on your data flow,
instead of worrying about failures.
流 式 写 入 Delta Table
1)同 时 读 写, 并 且 要 保 证 数 据 的 一 致 性 (Full ACID Transaction)
Snapshot isolation between writers and readers. Focus on your data flow,
instead of worrying about failures.
流 式 写 入 Delta Table
流 式 读 取 Delta Table
一 次 性 写 入 Delta Table
读 当 前 版 本 的 Delta Table
Data Lake
CSV,
JSON, TXT…
Kinesis
AI & Reporting
Data Lake
CSV,
JSON, TXT…
Kinesis
AI & Reporting
?
2)可 以 高 吞 吐 从 大 表 读 数 据 (Scalable metadata handling)
问题1: 百万级的 partition values?
- 从 Hive metastore 取每个partition 的location path?
问题2: 亿级的files?
- 每个partition 的 location 还要list 无数的大大小小的文件?
天荒地老
花儿枯了
Data Lake
CSV,
JSON, TXT…
Kinesis
AI & Reporting
?
2)可 以 高 吞 吐 从 大 表 读 数 据 (Scalable metadata handling)
问题1: 百万级的 partition values?
问题2: 亿级的files?
天荒地老
花儿枯了
老大,这不就是典型的大数据问题?
2)可 以 高 吞 吐 从 大 表 读 数 据 (Scalable metadata handling)
问题1: 百万级的 partition values?
问题2: 亿级的files?
天荒地老
花儿枯了
老大,这不就是典型的大数据问题?
• 使 用 Parquet 存 file paths
• 使用 Spark’s Distributed Vectorized Parquet Reader 读
Data Lake
CSV,
JSON, TXT…
Kinesis
AI & Reporting
Data Lake
CSV,
JSON, TXT…
Kinesis
AI & Reporting
?
3)遇 到 错 误 写 出 可 以 回 滚 (rollback) 可以删改(update/delete/merge)
数据这么脏。。。孰能无错 !
Time Travel – 仅仅为了纠错???
查 询 过 往 版 本
Data Lake
CSV,
JSON, TXT…
Kinesis
AI & Reporting
3)遇 到 错 误 写 出 可 以 回 滚 (rollback) 可以删改(update/delete/merge)
数据这么脏。。。孰能无错 !
Time Travel - 纠错,Debug,重建过往报告,查账,审计,复杂的
temporal query,快速更新Table 数据的版本查询
查 询 过 往 版 本
Data Lake
CSV,
JSON, TXT…
Kinesis
AI & Reporting
3)遇 到 错 误 写 出 可 以 回 滚 (rollback) 可以删改(update/delete/merge)
数据这么脏。。。孰能无错 !
Data Lake
CSV,
JSON, TXT…
Kinesis
AI & Reporting
3)遇 到 错 误 写 出 可 以 回 滚 (rollback) 可以删改(update/delete/merge)
数据这么脏。。。孰能无错 !
删除
Data Lake
CSV,
JSON, TXT…
Kinesis
AI & Reporting
更新
Data Lake
CSV,
JSON, TXT…
Kinesis
AI & Reporting
merge
Data Lake
CSV,
JSON, TXT…
Kinesis
AI & Reporting
3)遇 到 错 误 写 出 可 以 回 滚 (rollback) 可以删改(update/delete/merge)
update/delete/merge 能提供标准SQL文法吗?
正在努力!Spark 3.0 is coming!
支持 Spark 2.4,需要 Delta 需要加上自己的 SQL parser
4)在 线 业 务 不 下 线 的 同 时 可 以 重 新 处 理 历 史 数 据 (replay historical data)
Stream the backfilled historical data through the same pipeline
因为 ACID support,删掉相关的结果,重新改业务逻辑,历史数据的做批处理,
流可以同时持续处理最新的数据。
Data Lake
CSV,
JSON, TXT…
Kinesis
AI & Reporting
5)处 理 迟 到 数 据 (late arriving data) 而 无 需 推 迟 下 阶 段 的 数 据 处 理
Stream any late arriving data added to the table as they get added
因为 ACID support ,迟到的数据也可以通过MERGE/UPSERT 来处理
Data Lake
CSV,
JSON, TXT…
Kinesis
AI & Reporting
1)同 时 读 写, 并 且 要 保 证 数 据 的 一 致 性 (read consistent data)
2)可 以 高 吞 吐 从 大 表 读 数 据 (Scalable metadata handling)
3)遇 到 错 误 写 出 可 以 回 滚 (rollback) 可以删改(update/delete/merge)
4)在 线 业 务 不 下 线 的 同 时 可 以 重 新 处 理 历 史 数 据 (replay historical data)
5)处 理 迟 到 数 据 (late arriving data) 而 无 需 推 迟 下 阶 段 的 数 据 处 理
Data Lake
CSV,
JSON, TXT…
Kinesis
AI & Reporting
Data Lake
CSV,
JSON, TXT…
Kinesis
AI & Reporting
Process data continuously and incrementally as new data arrive in a
cost efficient way without having to choose between batch or streaming
项 目 经 理 如 是 说,
数 据 工 程 师 的 第 一 份 架 构 草 图 - Delta 架 构
AI & Reporting
Streaming
Analytics
Data Lake
CSV,
JSON, TXT…
Kinesis
Delta 架 构
A continuous data flow model to unify batch & streaming
Delta 架 构
A continuous data flow model to unify batch & streaming
Data Lake AI & Reporting
Streaming
Analytics
Business-level
Aggregates
Filtered, Cleaned
Augmented
Raw Ingestion
Bronze Silver Gold
CSV,
JSON, TXT…
Kinesis
Quality
INSERT
UPDATE
DELETE UPSERT
OVERWRITE
Delta 架 构 的 特 性
持 续 流 入 流 出 Delta Lake table.
● 批 流 合 并 . Same engine. Same APIs. Same user code. 无需如
Lambda架构同时使用批流处理.
● 高 效 增 量 数 据 载 入. 无需对是否有新文件加入做状态管理
[e.g., Structured Streaming’s Trigger.Once]
● 快 速 无 延 迟 流 处 理. [Trigger.ProcessingTime, Continuous]
● 简单修改即可将批处理转换成持续流处理
#1. 持 续 数 据 流
按 需 物 化 Dataframes; 特 别 当 需 要 大 量 数 据 转 换 (transformations).
物 化 (materialization) 的 目 的:
● 容 错 恢 复
#2.物化中间结果
T1
T1
T2
T2
T3
T3
T4
T5
T6
T7
Source Table Dest Tables
存 于 内 存 的 中 间 结 果
● 一写多读● 方 便 故 障 排 查
T1 T2 T3
T4
T5
T6
T7
落地的中间结果
#2.物化中间结果
按 需 物 化 Dataframes; 特 别 当 需 要 大 量 数 据 转 换 (transformations).
物 化 (materialization) 的 目 的:
● 容 错 恢 复 ● 一写多读● 方 便 故 障 排 查
T1 T2 T3
T4
T5
T6
T7
#2.物化中间结果
落地的中间结果落地的中间结果
多少个物化 Dataframes?
Reliability 和 end-2-end latency 的取舍
1. 流处理; 持续 数据流入和处理. 无需作业调度管理
[Trigger.ProcessingTime, Continuous]
#3. 费用与延迟的取舍
Data Lake AI & Reporting
Streaming
Analytics
Business-level
Aggregates
Filtered, Cleaned
Augmented
Raw Ingestion
Bronze Silver Gold
CSV,
JSON, TXT…
Kinesis
*Data Quality Levels *
1. 流处理; 持续 数据流入和处理: 需要永远在线的 clusters
2. 频繁批处理; 分钟级数据流入和处理(比如, 每半小时一次):
需要 a warm pool of machines. 无事关机,按需启动. 可使用
Spark streaming 的 Trigger.Once 模式 [incremental processing].
3. 非频繁批处理; 若干小时或若干天的数据批流入和处理: 无
事关机,按需启动. 可使用 Spark streaming 的 Trigger.Once 模式
[incremental processing].
#3. 费用与延迟的取舍
根据常用查询的predicate,为改善读取速度,可优化数据的物
理存储:
● Partitioning on low cardinality 列 (确保每个partition 大于 1GB).
○ partitionBy(date, eventType). // 仅 有 100 个 不 同 event types
● Z-Ordering on high cardinality 列
○ optimize table ZORDER BY userId. // 1 个 亿 的 不 同 user ids
#4. 优化数据的物理存储
长期保留原始数据(raw data) +
stream = 廉价的重处理
• 仅需要删除目标表,重启流处理
• 利用云的弹性计算 (cloud
elasticity) 快速处理初始回填
(initial backfill)
#5. 重新处理历史数据
.
.
.
● 原始数据表的schemas 做自动合并: 可以确保永远捕获最初的
events 而不丢失任何数据.
● 数据写入时强制 schema 限制和data expectations: 逐阶段改善数
据质量,直到数据质量达到数据分析的需求
#6. 数据质量的调整
Data Lake AI & Reporting
Streaming
Analytics
Business-level
Aggregates
Filtered, Cleaned
Augmented
Raw Ingestion
Bronze Silver Gold
CSV,
JSON, TXT…
Kinesis
Quality
*Data Quality Levels *
● 支持批处理和标准DML:
#6. 数据质量的调整
Data Lake AI & Reporting
Streaming
Analytics
Business-level
Aggregates
Filtered, Cleaned
Augmented
Raw Ingestion
Bronze Silver Gold
CSV,
JSON, TXT…
Kinesis
Quality
• Retention
• Corrections
• GDPR
• UPSERTS
INSERT
UPDATE
DELETE MERGE
OVERWRITE
• 持续的数据流入和处理 [再无Lambda架构的批流分离]
• 物化中间结果来改善可靠性和方便故障排查
• 基于用户使用场景和商业需求做费用与延迟的取舍
• 根据查询的常用模式来优化数据的物理存储
• 历史数据的再处理只需要删除结果table 重启流处理
• 通过调整schema management, data expectations
and UPDATE/DELETE/MERGE 来一步一步地改善数据
质量,直到数据可以被用于分析
关键特性
1. 减少端到端的pipeline SLA.
多个使用单位把data pipeline 的 SLA 从小时减少到分钟级别
2. 减少pipeline 的维护成本
避免了为了达到分钟级别的用例延迟而引入 lambda 架构
3. 更容易的处理数据更新和删除.
简化了Change data capture, GDPR, Sessionization, 数据去冗
4. 通过计算和存储的分离和可弹缩而降低了infrastructure 的费用
多个使用单位将infrastructure的费用降低了超过十倍
Delta 架构的优点
Delta 架 构 的 经 典 案 例
Improved reliability:
Petabyte-scale jobs
10x lower compute:
640 服 务 器 → 64!
Simpler, faster ETL:
84 jobs → 3 jobs
halved data latency
Easier transactional
updates:
No downtime or
consistency issues!
Simple CDC:
Easy with MERGE
Improved performance: Queries run faster
大 于 一 小 时 → 少 于 六 秒
自我介绍
64
Databricks Cluster
Data consistency and
integrity:
not available before
Increased data quality:
name match accuracy
up 80% → 95%
Faster data loads:
一 天 → 二十分钟
Instead of parquet … … simply say delta
dataframe
.write
.format("parquet")
.save("/data")
dataframe
.write
.format("delta")
.save("/data")
pyspark --packages io.delta:delta-core_2.12:0.4.0
bin/spark-shell --packages io.delta:delta-core_2.12:0.4.0
Add Spark Package
<dependency>
<groupId>io.delta</groupId>
<artifactId>delta-core_2.12</artifactId>
<version>0.4.0</version>
</dependency>
Maven
Demo
Delta Lake Primer
https://dbricks.co/dlw-01
Delta Lake 社区
自我介绍
Delta Lake Roadmap
Releases Features
0.2.0 • Cloud storage support
• Improved concurrency
0.3.0 • Scala/Java APIs for DML commands
• Scala/Java APIs for query commit history
• Scala/Java APIs for vacuuming old files
0.4.0 • Python APIs for DML and utility operations
• In-place Conversion of Parquet to Delta Lake table
Q4 • Enable Hive support reading Delta tables
• SQL DML support with Spark 3.0
• And more
Delta Lake Community
2+
Exabytes of Delta
Read/Writes per month
3700+
Orgs using Delta
0
5,000
10,000
15,000
20,000
M
arch
April
M
ay
June
July
AugustSeptem
ber
自我介绍
踊跃参加 Delta Lake 社区
今天就开始造属于你的Delta Lake!
https://delta.io/
Slack Channel: delta-users.slack.com
Mailing List: groups.google.com/forum/#!forum/delta-users
koalas
3.0
李潇 (lixiao AT databricks.com)
Unified data analytics platform for accelerating innovation across
data science, data engineering, and business analytics
Original creators of popular data and machine learning open source projects
Global company with 5,000 customers and 450+ partners
中国
世界那么大,全球招砖家 !

Mais conteúdo relacionado

Mais procurados

王龙:百度数据库架构演变与设计
王龙:百度数据库架构演变与设计王龙:百度数据库架构演变与设计
王龙:百度数据库架构演变与设计YANGL *
 
賽門鐵克 Storage Foundation 6.0 簡報
賽門鐵克 Storage Foundation 6.0 簡報賽門鐵克 Storage Foundation 6.0 簡報
賽門鐵克 Storage Foundation 6.0 簡報Wales Chen
 
Data Analyse Black Horse - ClickHouse
Data Analyse Black Horse - ClickHouseData Analyse Black Horse - ClickHouse
Data Analyse Black Horse - ClickHouseJack Gao
 
Spark introduction - In Chinese
Spark introduction - In ChineseSpark introduction - In Chinese
Spark introduction - In Chinesecolorant
 
運用MMLSpark 來加速Spark 上 機器學習專案
運用MMLSpark 來加速Spark 上機器學習專案運用MMLSpark 來加速Spark 上機器學習專案
運用MMLSpark 來加速Spark 上 機器學習專案Herman Wu
 
ClickHouse北京Meetup ClickHouse Best Practice @Sina
ClickHouse北京Meetup ClickHouse Best Practice @SinaClickHouse北京Meetup ClickHouse Best Practice @Sina
ClickHouse北京Meetup ClickHouse Best Practice @SinaJack Gao
 
Big Data Taiwan 2014 Track1-3: Big Data, Big Challenge — Splunk 幫你解決 Big Data...
Big Data Taiwan 2014 Track1-3: Big Data, Big Challenge — Splunk 幫你解決 Big Data...Big Data Taiwan 2014 Track1-3: Big Data, Big Challenge — Splunk 幫你解決 Big Data...
Big Data Taiwan 2014 Track1-3: Big Data, Big Challenge — Splunk 幫你解決 Big Data...Etu Solution
 
数据科学分析协作平台CDSW
数据科学分析协作平台CDSW数据科学分析协作平台CDSW
数据科学分析协作平台CDSWJianwei Li
 
基于Spring batch的大数据量并行处理
基于Spring batch的大数据量并行处理基于Spring batch的大数据量并行处理
基于Spring batch的大数据量并行处理Jacky Chi
 
Elastic Stack 最新动态
Elastic Stack 最新动态Elastic Stack 最新动态
Elastic Stack 最新动态Elasticsearch
 
Hadoop的典型应用与企业化之路 for HBTC 2012
Hadoop的典型应用与企业化之路 for HBTC 2012Hadoop的典型应用与企业化之路 for HBTC 2012
Hadoop的典型应用与企业化之路 for HBTC 2012James Chen
 
How to plan a hadoop cluster for testing and production environment
How to plan a hadoop cluster for testing and production environmentHow to plan a hadoop cluster for testing and production environment
How to plan a hadoop cluster for testing and production environmentAnna Yen
 
Elastic stack day-1
Elastic stack day-1Elastic stack day-1
Elastic stack day-1YI-CHING WU
 
Apache hadoop and cdh(cloudera distribution) introduction 基本介紹
Apache hadoop and cdh(cloudera distribution) introduction 基本介紹Apache hadoop and cdh(cloudera distribution) introduction 基本介紹
Apache hadoop and cdh(cloudera distribution) introduction 基本介紹Anna Yen
 
Data Engineering in Taiwan: PAST, NOW and FUTURE
Data Engineering in Taiwan: PAST, NOW and FUTUREData Engineering in Taiwan: PAST, NOW and FUTURE
Data Engineering in Taiwan: PAST, NOW and FUTUREJazz Yao-Tsung Wang
 
Cloudera企业数据中枢平台
Cloudera企业数据中枢平台Cloudera企业数据中枢平台
Cloudera企业数据中枢平台Jianwei Li
 

Mais procurados (20)

王龙:百度数据库架构演变与设计
王龙:百度数据库架构演变与设计王龙:百度数据库架构演变与设计
王龙:百度数据库架构演变与设计
 
賽門鐵克 Storage Foundation 6.0 簡報
賽門鐵克 Storage Foundation 6.0 簡報賽門鐵克 Storage Foundation 6.0 簡報
賽門鐵克 Storage Foundation 6.0 簡報
 
Data Analyse Black Horse - ClickHouse
Data Analyse Black Horse - ClickHouseData Analyse Black Horse - ClickHouse
Data Analyse Black Horse - ClickHouse
 
Spark introduction - In Chinese
Spark introduction - In ChineseSpark introduction - In Chinese
Spark introduction - In Chinese
 
運用MMLSpark 來加速Spark 上 機器學習專案
運用MMLSpark 來加速Spark 上機器學習專案運用MMLSpark 來加速Spark 上機器學習專案
運用MMLSpark 來加速Spark 上 機器學習專案
 
ClickHouse北京Meetup ClickHouse Best Practice @Sina
ClickHouse北京Meetup ClickHouse Best Practice @SinaClickHouse北京Meetup ClickHouse Best Practice @Sina
ClickHouse北京Meetup ClickHouse Best Practice @Sina
 
Big Data Taiwan 2014 Track1-3: Big Data, Big Challenge — Splunk 幫你解決 Big Data...
Big Data Taiwan 2014 Track1-3: Big Data, Big Challenge — Splunk 幫你解決 Big Data...Big Data Taiwan 2014 Track1-3: Big Data, Big Challenge — Splunk 幫你解決 Big Data...
Big Data Taiwan 2014 Track1-3: Big Data, Big Challenge — Splunk 幫你解決 Big Data...
 
数据科学分析协作平台CDSW
数据科学分析协作平台CDSW数据科学分析协作平台CDSW
数据科学分析协作平台CDSW
 
基于Spring batch的大数据量并行处理
基于Spring batch的大数据量并行处理基于Spring batch的大数据量并行处理
基于Spring batch的大数据量并行处理
 
Elastic Stack 最新动态
Elastic Stack 最新动态Elastic Stack 最新动态
Elastic Stack 最新动态
 
Hadoop的典型应用与企业化之路 for HBTC 2012
Hadoop的典型应用与企业化之路 for HBTC 2012Hadoop的典型应用与企业化之路 for HBTC 2012
Hadoop的典型应用与企业化之路 for HBTC 2012
 
How to plan a hadoop cluster for testing and production environment
How to plan a hadoop cluster for testing and production environmentHow to plan a hadoop cluster for testing and production environment
How to plan a hadoop cluster for testing and production environment
 
Something about Kafka - Why Kafka is so fast
Something about Kafka - Why Kafka is so fastSomething about Kafka - Why Kafka is so fast
Something about Kafka - Why Kafka is so fast
 
Elastic stack day-1
Elastic stack day-1Elastic stack day-1
Elastic stack day-1
 
SMACK Dev Experience
SMACK Dev ExperienceSMACK Dev Experience
SMACK Dev Experience
 
Apache hadoop and cdh(cloudera distribution) introduction 基本介紹
Apache hadoop and cdh(cloudera distribution) introduction 基本介紹Apache hadoop and cdh(cloudera distribution) introduction 基本介紹
Apache hadoop and cdh(cloudera distribution) introduction 基本介紹
 
Data Engineering in Taiwan: PAST, NOW and FUTURE
Data Engineering in Taiwan: PAST, NOW and FUTUREData Engineering in Taiwan: PAST, NOW and FUTURE
Data Engineering in Taiwan: PAST, NOW and FUTURE
 
Spark tutorial
Spark tutorialSpark tutorial
Spark tutorial
 
Cloudera企业数据中枢平台
Cloudera企业数据中枢平台Cloudera企业数据中枢平台
Cloudera企业数据中枢平台
 
Databases on AWS
Databases on AWSDatabases on AWS
Databases on AWS
 

Semelhante a Delta Lake Architecture: Delta Lake + Apache Spark Structured Streaming

Selling sybase hds solution for banking
Selling sybase hds solution for bankingSelling sybase hds solution for banking
Selling sybase hds solution for bankingfocusbi
 
05 杨志丰
05 杨志丰05 杨志丰
05 杨志丰锐 张
 
基于Hbase的实时计算分享
基于Hbase的实时计算分享基于Hbase的实时计算分享
基于Hbase的实时计算分享yiihsia
 
基于Hbase的实时计算分享
基于Hbase的实时计算分享基于Hbase的实时计算分享
基于Hbase的实时计算分享yiihsia
 
20130626联动优势数据访问层DAL架构和实践5(刘胜)数据分片和分页
20130626联动优势数据访问层DAL架构和实践5(刘胜)数据分片和分页20130626联动优势数据访问层DAL架构和实践5(刘胜)数据分片和分页
20130626联动优势数据访问层DAL架构和实践5(刘胜)数据分片和分页liu sheng
 
選擇正確的Solution 來建置現代化的雲端資料倉儲
選擇正確的Solution 來建置現代化的雲端資料倉儲選擇正確的Solution 來建置現代化的雲端資料倉儲
選擇正確的Solution 來建置現代化的雲端資料倉儲Herman Wu
 
Ocean base 千亿级海量数据库-日照
Ocean base 千亿级海量数据库-日照Ocean base 千亿级海量数据库-日照
Ocean base 千亿级海量数据库-日照Shaoning Pan
 
Ocean base海量结构化数据存储系统 hadoop in china
Ocean base海量结构化数据存储系统 hadoop in chinaOcean base海量结构化数据存储系统 hadoop in china
Ocean base海量结构化数据存储系统 hadoop in chinaknuthocean
 
开源+自主开发 - 淘宝软件基础设施构建实践
开源+自主开发  - 淘宝软件基础设施构建实践开源+自主开发  - 淘宝软件基础设施构建实践
开源+自主开发 - 淘宝软件基础设施构建实践Wensong Zhang
 
Hbase在淘宝的应用与优化 修改
Hbase在淘宝的应用与优化 修改Hbase在淘宝的应用与优化 修改
Hbase在淘宝的应用与优化 修改yp_fangdong
 
20140326联动优势数据访问层DAL架构和实践7(刘胜)工行交流
20140326联动优势数据访问层DAL架构和实践7(刘胜)工行交流20140326联动优势数据访问层DAL架构和实践7(刘胜)工行交流
20140326联动优势数据访问层DAL架构和实践7(刘胜)工行交流liu sheng
 
imobile-beta技术沙龙
imobile-beta技术沙龙imobile-beta技术沙龙
imobile-beta技术沙龙posestudio
 
淘宝对象存储与Cdn系统到服务
淘宝对象存储与Cdn系统到服务淘宝对象存储与Cdn系统到服务
淘宝对象存储与Cdn系统到服务drewz lin
 
Taobao图片存储与cdn系统到服务
Taobao图片存储与cdn系统到服务Taobao图片存储与cdn系统到服务
Taobao图片存储与cdn系统到服务Wensong Zhang
 
COSCUP 2019 - 開源大數據引擎 Greenplum
COSCUP 2019 - 開源大數據引擎 GreenplumCOSCUP 2019 - 開源大數據引擎 Greenplum
COSCUP 2019 - 開源大數據引擎 GreenplumOmni-Alex Chen
 
Big Data Projet Management the Body of Knowledge (BDPMBOK)
Big Data Projet Management the Body of Knowledge (BDPMBOK)Big Data Projet Management the Body of Knowledge (BDPMBOK)
Big Data Projet Management the Body of Knowledge (BDPMBOK)Jazz Yao-Tsung Wang
 
大型系统的Java中间件实践q con北京
大型系统的Java中间件实践q con北京大型系统的Java中间件实践q con北京
大型系统的Java中间件实践q con北京vanadies10
 
数据库性能诊断的七种武器
数据库性能诊断的七种武器数据库性能诊断的七种武器
数据库性能诊断的七种武器Leyi (Kamus) Zhang
 

Semelhante a Delta Lake Architecture: Delta Lake + Apache Spark Structured Streaming (20)

Selling sybase hds solution for banking
Selling sybase hds solution for bankingSelling sybase hds solution for banking
Selling sybase hds solution for banking
 
Cdc@ganji.com
Cdc@ganji.comCdc@ganji.com
Cdc@ganji.com
 
05 杨志丰
05 杨志丰05 杨志丰
05 杨志丰
 
基于Hbase的实时计算分享
基于Hbase的实时计算分享基于Hbase的实时计算分享
基于Hbase的实时计算分享
 
基于Hbase的实时计算分享
基于Hbase的实时计算分享基于Hbase的实时计算分享
基于Hbase的实时计算分享
 
20130626联动优势数据访问层DAL架构和实践5(刘胜)数据分片和分页
20130626联动优势数据访问层DAL架构和实践5(刘胜)数据分片和分页20130626联动优势数据访问层DAL架构和实践5(刘胜)数据分片和分页
20130626联动优势数据访问层DAL架构和实践5(刘胜)数据分片和分页
 
選擇正確的Solution 來建置現代化的雲端資料倉儲
選擇正確的Solution 來建置現代化的雲端資料倉儲選擇正確的Solution 來建置現代化的雲端資料倉儲
選擇正確的Solution 來建置現代化的雲端資料倉儲
 
Ocean base 千亿级海量数据库-日照
Ocean base 千亿级海量数据库-日照Ocean base 千亿级海量数据库-日照
Ocean base 千亿级海量数据库-日照
 
Ocean base海量结构化数据存储系统 hadoop in china
Ocean base海量结构化数据存储系统 hadoop in chinaOcean base海量结构化数据存储系统 hadoop in china
Ocean base海量结构化数据存储系统 hadoop in china
 
开源+自主开发 - 淘宝软件基础设施构建实践
开源+自主开发  - 淘宝软件基础设施构建实践开源+自主开发  - 淘宝软件基础设施构建实践
开源+自主开发 - 淘宝软件基础设施构建实践
 
Hic2011
Hic2011Hic2011
Hic2011
 
Hbase在淘宝的应用与优化 修改
Hbase在淘宝的应用与优化 修改Hbase在淘宝的应用与优化 修改
Hbase在淘宝的应用与优化 修改
 
20140326联动优势数据访问层DAL架构和实践7(刘胜)工行交流
20140326联动优势数据访问层DAL架构和实践7(刘胜)工行交流20140326联动优势数据访问层DAL架构和实践7(刘胜)工行交流
20140326联动优势数据访问层DAL架构和实践7(刘胜)工行交流
 
imobile-beta技术沙龙
imobile-beta技术沙龙imobile-beta技术沙龙
imobile-beta技术沙龙
 
淘宝对象存储与Cdn系统到服务
淘宝对象存储与Cdn系统到服务淘宝对象存储与Cdn系统到服务
淘宝对象存储与Cdn系统到服务
 
Taobao图片存储与cdn系统到服务
Taobao图片存储与cdn系统到服务Taobao图片存储与cdn系统到服务
Taobao图片存储与cdn系统到服务
 
COSCUP 2019 - 開源大數據引擎 Greenplum
COSCUP 2019 - 開源大數據引擎 GreenplumCOSCUP 2019 - 開源大數據引擎 Greenplum
COSCUP 2019 - 開源大數據引擎 Greenplum
 
Big Data Projet Management the Body of Knowledge (BDPMBOK)
Big Data Projet Management the Body of Knowledge (BDPMBOK)Big Data Projet Management the Body of Knowledge (BDPMBOK)
Big Data Projet Management the Body of Knowledge (BDPMBOK)
 
大型系统的Java中间件实践q con北京
大型系统的Java中间件实践q con北京大型系统的Java中间件实践q con北京
大型系统的Java中间件实践q con北京
 
数据库性能诊断的七种武器
数据库性能诊断的七种武器数据库性能诊断的七种武器
数据库性能诊断的七种武器
 

Delta Lake Architecture: Delta Lake + Apache Spark Structured Streaming

  • 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. 2017/10 2018/06 2019/042017/06 启程 宣布 亮相 Spark + AI Summit 开源 Dominique Brezinski (Apple Inc.) Michael Armbrust (Databricks) 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. Data Lake CSV, JSON, TXT… Kinesis AI & Reporting Process data continuously and incrementally as new data arrive in a cost efficient way without having to choose between batch or streaming 项 目 经 理 如 是 说, 数 据 工 程 师 的 第 一 份 架 构 草 图,
  • 9. Table (Data gets written continuously) AI & Reporting Events Spark 作 业 由 于 小 文 件 太 多 导 致 不 断 变 慢 Stream Stream 数 据 工 程 师 的 第 二 份 方 案
  • 10. Events 额 外 的 压 缩 导 致 延 迟 Stream Table (Data gets written continuously) 每 小 时 定 期 压 缩 数 据 数 据 工 程 师 的 第 三 份 方 案 AI & ReportingTable BatchBatch
  • 11. AI & ReportingTable Batch Events 业 务 不 接 受 超 过 1 小 时 的 延 迟 Stream Table (Data gets written continuously) Batch 每 小 时 定 期 压 缩 数 据 数 据 工 程 师 的 第 三 份 方 案
  • 12. Table (Data gets written continuously) Stream Unified ViewStream Events Lambda 架 构 大 幅 增 加 运 营 负 担 Batch Batch 每 小 时 定 期 压 缩 数 据 数 据 工 程 师 的 第 四 份 方 案
  • 13. Table (Data gets written continuously) AI & Reporting Stream Unified ViewStream Events 验 证 与 其 他 数 据 清 理 需 要 批 流 各 做 一 遍Batch Batch 数 据 验 证 每 小 时 定 期 压 缩 数 据 数 据 工 程 师 的 第 五 份 方 案
  • 14. Table (Data gets written continuously) AI & Reporting Stream Unified ViewStream Events 每 小 时 定 期 压 缩 数 据 验 证 后 的 纠 错 意 味 某 些 Partition 需 要 重 新 处 理Batch Batch 数 据 验 证 重 新 处 理 数 据 工 程 师 的 第 六 份 方 案
  • 15. Table (Data gets written continuously) AI & Reporting Stream Unified ViewStream Events 每 小 时 定 期 压 缩 数 据 数 据 湖 的 Update / Merge 异 常 复 杂Batch Batch 数 据 验 证 重 新 处 理 Update / Merge 数 据 工 程 师 的 第 七 份 方 案
  • 16. Table (Data gets written continuously) AI & Reporting Stream Unified ViewStream Events 每 小 时 定 期 压 缩 数 据 数 据 湖 的 Update / Merge 异 常 复 杂Batch Batch 数 据 验 证 重 新 处 理 Update / Merge 数 据 工 程 师 的 第 七 份 方 案 经过半年研发,喜大普奔 苦心研究Lambda 架构 正式上线!
  • 17. Table (Data gets written continuously) AI & Reporting Stream Unified ViewStream Events 每 小 时 定 期 压 缩 数 据 数 据 湖 的 Update / Merge 异 常 复 杂Batch Batch 数 据 验 证 重 新 处 理 Update / Merge 数 据 工 程 师 的 第 七 份 方 案 Extremely slow dataframe loading Commands Blocked on Metadata Operations Keep getting FileNotFound CRITICAL: inconsistent job results Different field types causes conflicting schema Refresh Table Issues??? Concatenate small files How to control number of parquet files ? Eventual Consistency !!! 坑爹 想骂娘
  • 18. Table (Data gets written continuously) AI & Reporting Stream Unified ViewStream Events 每 小 时 定 期 压 缩 数 据 数 据 湖 的 Update / Merge 异 常 复 杂Batch Batch 数 据 验 证 重 新 处 理 Update / Merge 面 对 Lambda 架 构,运 维 工 程 师 凌 乱 了 。。。
  • 19. Table (Data gets written continuously) AI & Reporting Stream Unified ViewStream Events 每 小 时 定 期 压 缩 数 据 数 据 湖 的 Update / Merge 异 常 复 杂Batch Batch 数 据 验 证 重 新 处 理 Update / Merge 运维已不易,相煎何太急! 面 对 Lambda 架 构,运 维 工 程 师 凌 乱 了 。。。 砖家点评:此方案,费钱费力, 将大好时光浪费到了解决系统局 限,而不是去从数据中抽取价值
  • 20. Data Lake CSV, JSON, TXT… Kinesis AI & Reporting Process data continuously and incrementally as new data arrive in a cost efficient way without having to choose between batch or streaming 项 目 经 理 如 是 说, 数 据 工 程 师 的 第 一 份 架 构 草 图, ? 到底最初的方案,哪里错了??? 为何选择复[ keng ] 杂[ die ] 的 Lambda 架构!!!
  • 21. 1)同 时 读 写, 并 且 要 保 证 数 据 的 一 致 性 2)可 以 高 吞 吐 从 大 表 读 数 据 3)遇 到 错 误 写 出 可 以 回 滚 和 删 改 4)在 线 业 务 不 下 线 的 同 时 可 以 重 新 处 理 历 史 数 据 5)处 理 迟 到 数 据 而 无 需 推 迟 下 阶 段 的 数 据 处 理 Data Lake CSV, JSON, TXT… Kinesis AI & Reporting ? ?到底缺了什么?
  • 22. + = Delta 架 构 • 批流合并,持续数据处理 • 按需随时可重新处理历史事件 • 独立且 弹性扩展计算和存储资源 Structured Streaming
  • 23. Delta Lake 的 基 本 原 理
  • 24. Delta On Disk Transaction Log Table Versions (Optional) Partition Directories Data Files my_table/ _delta_log/ 00000.json 00001.json date=2019-01-01/ file-1.parquet
  • 25. Action Types • Change Metadata – name, schema, partitioning, etc. • Add File – adds a file (with optional statistics) • Remove File – removes a file Table = result of a set of actions Result: Current Metadata, List of Files, List of Txns, Version
  • 26. Changes to the table are stored as ordered, atomic units called commits Add 1.parquet Add 2.parquet Remove 1.parquet Remove 2.parquet Add 3.parquet 000000.json 000001.json 。。。 Atomicity 的 实 现
  • 27. 1. Record start version 2. Record reads/writes 3. Attempt commit, check for conflicts among transactions 4. If someone else wins, check if anything you read has changed. 5. Try again. 乐 观 并 发 控 制 000000.json 000001.json 000002.json User 1 User 2 Write: Append Read: Schema Write: Append Read: Schema
  • 28. 上百万的commit log files! 如果解决海量元数据处理? 大 规 模 元 数 据 的 处 理 –UseSpark!!! Add 1.parquet Add 2.parquet Remove 1.parquet Remove 2.parquet Add 3.parquet Checkpoint
  • 30. Data Lake CSV, JSON, TXT… Kinesis AI & Reporting ? 1)同 时 读 写, 并 且 要 保 证 数 据 的 一 致 性 (Full ACID Transaction) Snapshot isolation between writers and readers. Focus on your data flow, instead of worrying about failures. 流 式 写 入 Delta Table
  • 31. 1)同 时 读 写, 并 且 要 保 证 数 据 的 一 致 性 (Full ACID Transaction) Snapshot isolation between writers and readers. Focus on your data flow, instead of worrying about failures. 流 式 写 入 Delta Table 流 式 读 取 Delta Table 一 次 性 写 入 Delta Table 读 当 前 版 本 的 Delta Table Data Lake CSV, JSON, TXT… Kinesis AI & Reporting
  • 32. Data Lake CSV, JSON, TXT… Kinesis AI & Reporting ? 2)可 以 高 吞 吐 从 大 表 读 数 据 (Scalable metadata handling) 问题1: 百万级的 partition values? - 从 Hive metastore 取每个partition 的location path? 问题2: 亿级的files? - 每个partition 的 location 还要list 无数的大大小小的文件? 天荒地老 花儿枯了
  • 33. Data Lake CSV, JSON, TXT… Kinesis AI & Reporting ? 2)可 以 高 吞 吐 从 大 表 读 数 据 (Scalable metadata handling) 问题1: 百万级的 partition values? 问题2: 亿级的files? 天荒地老 花儿枯了 老大,这不就是典型的大数据问题?
  • 34. 2)可 以 高 吞 吐 从 大 表 读 数 据 (Scalable metadata handling) 问题1: 百万级的 partition values? 问题2: 亿级的files? 天荒地老 花儿枯了 老大,这不就是典型的大数据问题? • 使 用 Parquet 存 file paths • 使用 Spark’s Distributed Vectorized Parquet Reader 读 Data Lake CSV, JSON, TXT… Kinesis AI & Reporting
  • 35. Data Lake CSV, JSON, TXT… Kinesis AI & Reporting ? 3)遇 到 错 误 写 出 可 以 回 滚 (rollback) 可以删改(update/delete/merge) 数据这么脏。。。孰能无错 !
  • 36. Time Travel – 仅仅为了纠错??? 查 询 过 往 版 本 Data Lake CSV, JSON, TXT… Kinesis AI & Reporting 3)遇 到 错 误 写 出 可 以 回 滚 (rollback) 可以删改(update/delete/merge) 数据这么脏。。。孰能无错 !
  • 37. Time Travel - 纠错,Debug,重建过往报告,查账,审计,复杂的 temporal query,快速更新Table 数据的版本查询 查 询 过 往 版 本 Data Lake CSV, JSON, TXT… Kinesis AI & Reporting 3)遇 到 错 误 写 出 可 以 回 滚 (rollback) 可以删改(update/delete/merge) 数据这么脏。。。孰能无错 !
  • 38. Data Lake CSV, JSON, TXT… Kinesis AI & Reporting 3)遇 到 错 误 写 出 可 以 回 滚 (rollback) 可以删改(update/delete/merge) 数据这么脏。。。孰能无错 ! 删除
  • 41. Data Lake CSV, JSON, TXT… Kinesis AI & Reporting 3)遇 到 错 误 写 出 可 以 回 滚 (rollback) 可以删改(update/delete/merge) update/delete/merge 能提供标准SQL文法吗? 正在努力!Spark 3.0 is coming! 支持 Spark 2.4,需要 Delta 需要加上自己的 SQL parser
  • 42. 4)在 线 业 务 不 下 线 的 同 时 可 以 重 新 处 理 历 史 数 据 (replay historical data) Stream the backfilled historical data through the same pipeline 因为 ACID support,删掉相关的结果,重新改业务逻辑,历史数据的做批处理, 流可以同时持续处理最新的数据。 Data Lake CSV, JSON, TXT… Kinesis AI & Reporting
  • 43. 5)处 理 迟 到 数 据 (late arriving data) 而 无 需 推 迟 下 阶 段 的 数 据 处 理 Stream any late arriving data added to the table as they get added 因为 ACID support ,迟到的数据也可以通过MERGE/UPSERT 来处理 Data Lake CSV, JSON, TXT… Kinesis AI & Reporting
  • 44. 1)同 时 读 写, 并 且 要 保 证 数 据 的 一 致 性 (read consistent data) 2)可 以 高 吞 吐 从 大 表 读 数 据 (Scalable metadata handling) 3)遇 到 错 误 写 出 可 以 回 滚 (rollback) 可以删改(update/delete/merge) 4)在 线 业 务 不 下 线 的 同 时 可 以 重 新 处 理 历 史 数 据 (replay historical data) 5)处 理 迟 到 数 据 (late arriving data) 而 无 需 推 迟 下 阶 段 的 数 据 处 理 Data Lake CSV, JSON, TXT… Kinesis AI & Reporting
  • 45. Data Lake CSV, JSON, TXT… Kinesis AI & Reporting Process data continuously and incrementally as new data arrive in a cost efficient way without having to choose between batch or streaming 项 目 经 理 如 是 说, 数 据 工 程 师 的 第 一 份 架 构 草 图 - Delta 架 构
  • 46. AI & Reporting Streaming Analytics Data Lake CSV, JSON, TXT… Kinesis Delta 架 构 A continuous data flow model to unify batch & streaming
  • 47. Delta 架 构 A continuous data flow model to unify batch & streaming Data Lake AI & Reporting Streaming Analytics Business-level Aggregates Filtered, Cleaned Augmented Raw Ingestion Bronze Silver Gold CSV, JSON, TXT… Kinesis Quality INSERT UPDATE DELETE UPSERT OVERWRITE
  • 48. Delta 架 构 的 特 性
  • 49. 持 续 流 入 流 出 Delta Lake table. ● 批 流 合 并 . Same engine. Same APIs. Same user code. 无需如 Lambda架构同时使用批流处理. ● 高 效 增 量 数 据 载 入. 无需对是否有新文件加入做状态管理 [e.g., Structured Streaming’s Trigger.Once] ● 快 速 无 延 迟 流 处 理. [Trigger.ProcessingTime, Continuous] ● 简单修改即可将批处理转换成持续流处理 #1. 持 续 数 据 流
  • 50. 按 需 物 化 Dataframes; 特 别 当 需 要 大 量 数 据 转 换 (transformations). 物 化 (materialization) 的 目 的: ● 容 错 恢 复 #2.物化中间结果 T1 T1 T2 T2 T3 T3 T4 T5 T6 T7 Source Table Dest Tables 存 于 内 存 的 中 间 结 果 ● 一写多读● 方 便 故 障 排 查
  • 51. T1 T2 T3 T4 T5 T6 T7 落地的中间结果 #2.物化中间结果 按 需 物 化 Dataframes; 特 别 当 需 要 大 量 数 据 转 换 (transformations). 物 化 (materialization) 的 目 的: ● 容 错 恢 复 ● 一写多读● 方 便 故 障 排 查
  • 53. 1. 流处理; 持续 数据流入和处理. 无需作业调度管理 [Trigger.ProcessingTime, Continuous] #3. 费用与延迟的取舍 Data Lake AI & Reporting Streaming Analytics Business-level Aggregates Filtered, Cleaned Augmented Raw Ingestion Bronze Silver Gold CSV, JSON, TXT… Kinesis *Data Quality Levels *
  • 54. 1. 流处理; 持续 数据流入和处理: 需要永远在线的 clusters 2. 频繁批处理; 分钟级数据流入和处理(比如, 每半小时一次): 需要 a warm pool of machines. 无事关机,按需启动. 可使用 Spark streaming 的 Trigger.Once 模式 [incremental processing]. 3. 非频繁批处理; 若干小时或若干天的数据批流入和处理: 无 事关机,按需启动. 可使用 Spark streaming 的 Trigger.Once 模式 [incremental processing]. #3. 费用与延迟的取舍
  • 55. 根据常用查询的predicate,为改善读取速度,可优化数据的物 理存储: ● Partitioning on low cardinality 列 (确保每个partition 大于 1GB). ○ partitionBy(date, eventType). // 仅 有 100 个 不 同 event types ● Z-Ordering on high cardinality 列 ○ optimize table ZORDER BY userId. // 1 个 亿 的 不 同 user ids #4. 优化数据的物理存储
  • 56. 长期保留原始数据(raw data) + stream = 廉价的重处理 • 仅需要删除目标表,重启流处理 • 利用云的弹性计算 (cloud elasticity) 快速处理初始回填 (initial backfill) #5. 重新处理历史数据 . . .
  • 57. ● 原始数据表的schemas 做自动合并: 可以确保永远捕获最初的 events 而不丢失任何数据. ● 数据写入时强制 schema 限制和data expectations: 逐阶段改善数 据质量,直到数据质量达到数据分析的需求 #6. 数据质量的调整 Data Lake AI & Reporting Streaming Analytics Business-level Aggregates Filtered, Cleaned Augmented Raw Ingestion Bronze Silver Gold CSV, JSON, TXT… Kinesis Quality *Data Quality Levels *
  • 58. ● 支持批处理和标准DML: #6. 数据质量的调整 Data Lake AI & Reporting Streaming Analytics Business-level Aggregates Filtered, Cleaned Augmented Raw Ingestion Bronze Silver Gold CSV, JSON, TXT… Kinesis Quality • Retention • Corrections • GDPR • UPSERTS INSERT UPDATE DELETE MERGE OVERWRITE
  • 59. • 持续的数据流入和处理 [再无Lambda架构的批流分离] • 物化中间结果来改善可靠性和方便故障排查 • 基于用户使用场景和商业需求做费用与延迟的取舍 • 根据查询的常用模式来优化数据的物理存储 • 历史数据的再处理只需要删除结果table 重启流处理 • 通过调整schema management, data expectations and UPDATE/DELETE/MERGE 来一步一步地改善数据 质量,直到数据可以被用于分析 关键特性
  • 60. 1. 减少端到端的pipeline SLA. 多个使用单位把data pipeline 的 SLA 从小时减少到分钟级别 2. 减少pipeline 的维护成本 避免了为了达到分钟级别的用例延迟而引入 lambda 架构 3. 更容易的处理数据更新和删除. 简化了Change data capture, GDPR, Sessionization, 数据去冗 4. 通过计算和存储的分离和可弹缩而降低了infrastructure 的费用 多个使用单位将infrastructure的费用降低了超过十倍 Delta 架构的优点
  • 61. Delta 架 构 的 经 典 案 例
  • 62. Improved reliability: Petabyte-scale jobs 10x lower compute: 640 服 务 器 → 64! Simpler, faster ETL: 84 jobs → 3 jobs halved data latency
  • 63. Easier transactional updates: No downtime or consistency issues! Simple CDC: Easy with MERGE Improved performance: Queries run faster 大 于 一 小 时 → 少 于 六 秒
  • 64. 自我介绍 64 Databricks Cluster Data consistency and integrity: not available before Increased data quality: name match accuracy up 80% → 95% Faster data loads: 一 天 → 二十分钟
  • 65. Instead of parquet … … simply say delta dataframe .write .format("parquet") .save("/data") dataframe .write .format("delta") .save("/data")
  • 66. pyspark --packages io.delta:delta-core_2.12:0.4.0 bin/spark-shell --packages io.delta:delta-core_2.12:0.4.0 Add Spark Package <dependency> <groupId>io.delta</groupId> <artifactId>delta-core_2.12</artifactId> <version>0.4.0</version> </dependency> Maven
  • 69. 自我介绍 Delta Lake Roadmap Releases Features 0.2.0 • Cloud storage support • Improved concurrency 0.3.0 • Scala/Java APIs for DML commands • Scala/Java APIs for query commit history • Scala/Java APIs for vacuuming old files 0.4.0 • Python APIs for DML and utility operations • In-place Conversion of Parquet to Delta Lake table Q4 • Enable Hive support reading Delta tables • SQL DML support with Spark 3.0 • And more
  • 70. Delta Lake Community 2+ Exabytes of Delta Read/Writes per month 3700+ Orgs using Delta 0 5,000 10,000 15,000 20,000 M arch April M ay June July AugustSeptem ber
  • 71. 自我介绍 踊跃参加 Delta Lake 社区 今天就开始造属于你的Delta Lake! https://delta.io/ Slack Channel: delta-users.slack.com Mailing List: groups.google.com/forum/#!forum/delta-users
  • 73. 李潇 (lixiao AT databricks.com)
  • 74. Unified data analytics platform for accelerating innovation across data science, data engineering, and business analytics Original creators of popular data and machine learning open source projects Global company with 5,000 customers and 450+ partners