Delta Lake - 数据湖的数据可靠性

简介: Delta Lake 是一个开源的存储层,为数据湖带来了可靠性。Delta Lake 提供了ACID事务、可伸缩的元数据处理以及统一的流和批数据处理。它运行在现有的数据湖之上,与 Apache Spark API完全兼容。

今天笔者将分享一位大神关于 Delta Lake 的演讲内容。这位是 Apache Spark 的 committer 和 PMC 成员,也是 Spark SQL 的最初创建者,目前领导 Databricks 团队,设计和构建 Structured Streaming 和 Databricks Delta,技术涉及分布式系统、大规模结构化存储和查询优化等方面。

这位大神就是 Michael Armbrust。

Delta Lake 回顾

前面的文章对于 Delta Lake 介绍很多,为了方便新的读者更快了解项目,这里简要说明:

Delta Lake 是一个开源的存储层,为数据湖带来了可靠性。Delta Lake 提供了ACID事务、可伸缩的元数据处理以及统一的流和批数据处理。它运行在现有的数据湖之上,与 Apache Spark API完全兼容。

因为 Michael 的演讲视频我也是粗略听过,到现在也忘记差不多了。不过,根据 slides 的内容,我尽量串起来,让读者明白。

笔者的注解基本都在每个 slide 的下方,为了让读者先查看 slides 内容,思考一番,然后再查看笔者的解读。

抛出问题

image.png

很多企业使用 Apache Spark 将各种数据导入到数据湖(data lake)中,在这个过程会花费很多money。

但是至少数据都进到数据湖,是不是看起来很美好。
image.png

然后渴望使用 Apache Spark 基于数据湖存储的海量数据进行数据科学分析和机器学习(ML)。

开始干活了,是不是真的很美好。
image.png

OMG,出问题了,一堆数据大部分都是不可靠的,导致大部分项目都失败了。这是因为数据科学分析和机器学习对数据质量要求非常高。

看来,美好只是想想而已,别当真。

数据湖的模样

image.png

那么,你期望的数据湖是什么样子的?

  • 可能是收集所有的数据,比如客户数据、视频/语音、点击流、传感器数据等
  • 不是传统的 RDBMS,不需要提前设置 Schema
  • 基于数据湖进行科学分析和机器学习,用于推荐引擎、风险/欺诈检测、IoT等

但是问题是,通常你的数据是 garbage(不要惊讶,没分析之前的确是),也就是数据湖里面存储的都是 garbage,所以 garbage out 给推荐引擎的都是无用数据,导致输出没有意义的结果。
image.png

那么一个典型的数据湖项目看起来是什么样子呢?如果不太清楚,就继续看。

image.png

一天 boss 跑过来说,兄dei,所有数据都进到 Kafka,现在要出需求了,两个任务,一个是 Streaming Analytics,实时查看 Business 运行情况等;另外一个任务是进行更加复杂的 AI 和 Reporting 分析,查看更多指标的洞察报告。

那我们如何做,怎么开始呢?

image.png

OK,引入 Apache Spark,因为 Spark API 可以消费 Kafka 数据,然后进行基于 DataFrame 和 DataSet 对数据进行各种计算包括实时窗口聚合操作,可以实时分析商业业务指标,但是有没有发现,很难处理以前历史数据,比如一年前的数据分析,以及更新的历史数据情况。

image.png

上面就是我们遇到的一个 Challenge #1: Historical Queries?

针对上面的问题,所以要把 Kafka 数据导入数据湖,保留历史,以备 boss 不时之需。其实上图就是典型的 lambda 架构,这样就可以解决实时和历史数据查询的问题。
image.png

但是我们又发现了另外一个问题:散乱的数据,Challenge #2: Messy Data?

如上图所示,我们需要启动额外的 Spark Jobs 来检查数据质量,如果出问题要及时告警,方便及时修复,即上图中加入 Validation 可以解决问题。

image.png

加入 Validation 校验数据质量功能后,的确很棒,又会带来新的问题,Challenge #3: Mistakes and Failures?

有时可能会丢失什么,数据一旦存储在数据湖中,那么怎么修复呢,可能需要不停的调整,根据时间、区域等创建分区目录等,进行计算,如果错误的话,删除分区目录,再重新处理。

image.png

上面引入 Reprocessing 框架,就需要更新数据,涉及 Challenge #4: Updates?

更新就要考虑事务,多版本等等一系列情况。
image.png

本来你就想静静地做个 Reporting、ML等,终将你会入坑,徘徊在以下几个问题当中:

  • Wasting Time & Money
  • Solving Systems Problems
  • Instead of Extracting Value From Data

image.png

  • 没有原子性意味着失败的生产作业会使数据处于损坏状态,需要繁琐的恢复操作
  • 没有质量强制执行会产生不一致和不可用的数据
  • 没有一致性/隔离性,就基本不可能混合追加和读取、批处理和流处理

到此,遇到的问题一堆,于是提出解决方案 Delta Lake。

Delta Lake 解决方案

image.png
image.png

回顾一下,我们在上面构建的整个系统,融入各种解决方案的数据湖,是不是有点复杂而且杂乱。

Delta Lake 将上面的整体解决方案转变为下图的解决方案。

image.png

是不是觉得柳暗花明又一村,现在你只需要关注 data flow。
image.png

image.png

image.png

这里,笔者把三个 slides 都放在一起了,Delta Lake 带来了几个关键的特性:

  • 支持 ACID 事务
  • 开放标准、开放源码(Apache License),存储 PB 级的数据。不断增长的社区包括 Presto, Spark 等
  • Apache Spark 支持,流批统一

image.png

Delta Lake 提供了一种工具,可以增量地提高数据质量,直到可以被有意义地消费。在 Delta Lake 中,数据被划分成了三个数据质量逻辑层次:

  • Bronze
  • Silver
  • Gold

下面会依次介绍功能和作用。

image.png

Bronze 层主要用于存储原始数据,即所谓的 Raw Data 。Delta Lake是一个数据湖存储引擎,可以支持各种各样的数据接入,这些数据源可能是 Kafka、Kinesis、Spark 或者是其他数据湖,这些数据接入 Delta Lake 之后就存储在Bronze 层,Bronze 层可以为大数据常用的分布式存储 HDFS 或其他存储,这也保证了数据湖中数据存储的可扩展性。
image.png

Silver 层主要用于存储经过初步处理(解析 Json格式、增加 Schema、过滤、清理、Join等)的数据。存储 Silver 中间数据主要有两方面好处:

  • 对企业的很多人来说有价值,数据共享
  • 这些中间数据可查询,便于调试
    image.png

Gold 层可以直接用来消费,可以给业务层直接使用,这些数据是处理后的可以被 ML 或 Tableau 等使用。可以使用 Spark 或者 Presto 在Gold层上直接做展现,或者在这些数据上做数据挖掘。
image.png

其实就是 Streams,数据流,通过 Delta Lake 增量地在不同层传送数据。

image.png

可能有的人说我不需要实时数据,我的报表每小时、每天或每月运行一次。但是 Streaming 并不是总是指低延时(low latency),而是关于持续增量地处理数据,不用去管什么数据是新的,哪些数据是旧的,已经处理哪些数据,如何从失败中恢复等,Streaming 考虑了这一切。Delta Lake 当然也支持批处理作业和标准的 DML。

image.png

最后,介绍一个比较酷的模式,recomputation,重新计算。因为我们在初始的 Bronze 存储了所有 Raw Data ,使用 Streaming 处理这些数据。如果发现代码存在 bug 或者存在一些未曾发觉的新需求,需要加入到分析系统,我们需要做的就是清理表的数据、清理掉 Checkpoint 并重启 Streaming。

广告时间

image.png
image.png
image.png

直接看,没有什么补充的。

如何使用 Delta Lake

image.png

这一块内容,笔者在之前的文章中,非常详细地实战过,这里的确不太适合再说。

数据质量

image.png

这里创建了一张 warehouse 的表,定义一些属性,包括存储路径、Schema等。

image.png

其实这里更关注的是特性是 expect,定义对数据质量的要求。关于数据质量这一块,大数据行业也是一直比较关注的,开源的产品也有几个,比如 Apache Griffin 等。

Delta Lake 数据质量,以后笔者会单独细说。

Delta Lake 如何工作

这部分 slides 的内容,笔者都曾带领大家详细的研究和实战过,这里为了该演讲内容的完整性,都带上。

image.png

存储可以有HDFS、S3 或其他 BlobStore 等。

image.png

数据表由一系列操作集合的数据信息组成的结果。
image.png
image.png
image.png
image.png

Roadmap

image.png

这个Roadmap有点老了,截至目前,Delta Lake 发布的版本为 0.4.0,支持:

  • Python APIs for DML and utility operations
    You can now use Python APIs to update/delete/merge data in Delta Lake tables and to run utility operations (i.e., vacuum, history) on them.
  • Convert-to-Delta
    You can now convert a Parquet table in place to a Delta Lake table without rewriting any of the data. This is great for converting very large Parquet tables which would be costly to rewrite as a Delta table. Furthermore, this process is reversible - you can convert a Parquet table to Delta Lake table, operate on it (e.g., delete or merge), and easily convert it back to a Parquet table.
  • SQL for utility operations
    You can now use SQL to run utility operations vacuum and history.

到此,Michael 演讲的内容比较详细地过了一遍,大家慢慢消化。


本文转载自公众号:DataFlow范式
作者Jason


相关阅读推荐

【译】Delta Lake 0.4.0 新特性演示:使用 Python API 就地转换与处理 Delta Lake 表
【译】数据湖正在成为新的数据仓库


阿里巴巴开源大数据技术团队成立Apache Spark中国技术社区,定期推送精彩案例,技术专家直播,问答区近万人Spark技术同学在线提问答疑,只为营造纯粹的Spark氛围,欢迎钉钉扫码加入!
image.png

对开源大数据和感兴趣的同学可以加小编微信(下图二维码,备注“进群”)进入技术交流微信群。
image.png

相关实践学习
数据湖构建DLF快速入门
本教程通过使⽤数据湖构建DLF产品对于淘宝用户行为样例数据的分析,介绍数据湖构建DLF产品的数据发现和数据探索功能。
快速掌握阿里云 E-MapReduce
E-MapReduce 是构建于阿里云 ECS 弹性虚拟机之上,利用开源大数据生态系统,包括 Hadoop、Spark、HBase,为用户提供集群、作业、数据等管理的一站式大数据处理分析服务。 本课程主要介绍阿里云 E-MapReduce 的使用方法。
相关文章
|
6月前
|
存储 数据挖掘 BI
数据平台发展史-从数据仓库数据湖到数据湖仓 1
数据平台发展史-从数据仓库数据湖到数据湖仓
|
1月前
|
SQL 分布式计算 HIVE
最强指南!数据湖Apache Hudi、Iceberg、Delta环境搭建
最强指南!数据湖Apache Hudi、Iceberg、Delta环境搭建
67 0
|
5月前
|
存储 人工智能 Cloud Native
耳朵经济快速增长背后,喜马拉雅数据价值如何释放 | 创新场景
喜马拉雅和阿里云的合作,正走在整个互联网行业的最前沿,在新的数据底座之上,喜马拉雅的AI、大数据应用也将大放光彩。本文摘自《云栖战略参考》
46466 5
耳朵经济快速增长背后,喜马拉雅数据价值如何释放 | 创新场景
|
3月前
|
存储 人工智能 运维
【云原生企业级数据湖:打破数据孤岛,优化存储成本】
【云原生企业级数据湖:打破数据孤岛,优化存储成本】 随着大数据时代的到来,企业对于数据的处理和存储需求日益增长。如何有效地存储和管理大量数据,同时降低运维成本,成为了企业面临的一大挑战。盛通教育的云原生企业级数据湖方案,正是为了解决这一问题而设计的。
163 1
|
3月前
|
存储 对象存储 SQL
【获奖名单公示】Hologres实时湖仓分析挑战赛
5分钟快速使用Hologres实时湖仓能力,无需移动数据,直接加速读取存储于数据湖OSS上的Hudi、Delta、Paimon等格式类型的数据
【获奖名单公示】Hologres实时湖仓分析挑战赛
|
4月前
|
SQL 分布式计算 Apache
流数据湖平台Apache Paimon(六)集成Spark之DML插入数据
流数据湖平台Apache Paimon(六)集成Spark之DML插入数据
83 0
|
5月前
|
存储 数据采集 安全
什么是数据管理,数据治理,数据中心,数据中台,数据湖?
什么是数据管理,数据治理,数据中心,数据中台,数据湖?
166 0
|
6月前
|
SQL 存储 人工智能
数据平台发展史-从数据仓库数据湖到数据湖仓 2
数据平台发展史-从数据仓库数据湖到数据湖仓
|
8月前
|
分布式计算 DataWorks 对象存储
全链路数据湖开发治理解决方案2.0重磅升级,全面增强数据入湖、调度和治理能力
阿里云全链路数据湖开发治理解决方案能力持续升级,发布2.0版本。解决方案包含开源大数据平台E-MapReduce(EMR) , 一站式大数据数据开发治理平台DataWorks ,数据湖构建DLF,对象存储OSS等核心产品。支持EMR新版数据湖DataLake集群(on ECS)、自定义集群(on ECS)、Spark集群(on ACK)三种形态,对接阿里云一站式大数据开发治理平台DataWorks,沉淀阿里巴巴十多年大数据建设方法论,为客户完成从入湖、建模、开发、调度、治理、安全等全链路数据湖开发治理能力,帮助客户提升数据的应用效率。
1283 1
|
10月前
|
存储 SQL 分布式计算
数据湖的选型(delta iceberg hudi)以及比对
数据湖的选型(delta iceberg hudi)以及比对
533 0