简介:本文翻译自卑数据技术公司 Databricks 针对数据湖 Delta Lake 的系列技术文章。家喻户晓,Databricks 主导着开源大数据社区 Apache Spark、Delta Lake 以及 ML Flow 等泛滥热门技术,而 Delta Lake 作为数据湖外围存储引擎计划给企业带来诸多的劣势。本系列技术文章,将具体开展介绍 Delta Lake。
前言
本文翻译自卑数据技术公司 Databricks 针对数据湖 Delta Lake 系列技术文章。家喻户晓,Databricks 主导着开源大数据社区 Apache Spark、Delta Lake 以及 ML Flow 等泛滥热门技术,而 Delta Lake 作为数据湖外围存储引擎计划给企业带来诸多的劣势。
此外,阿里云和 Apache Spark 及 Delta Lake 的原厂 Databricks 引擎团队单干,推出了基于阿里云的企业版全托管 Spark 产品——Databricks 数据洞察,该产品原生集成企业版 Delta Engine 引擎,无需额定配置,提供高性能计算能力。有趣味的同学能够搜寻 Databricks 数据洞察
或阿里云 Databricks
进入官网,或者间接拜访 https://www.aliyun.com/produc… 理解详情。
译者:韩宗泽(棕泽),阿里云计算平台事业部技术专家,负责开源大数据生态企业团队的研发工作。
Delta Lake 技术系列 – 湖仓一体(Lakehouse)
——整合数据湖和数据仓库的最佳劣势
目录
• Chapter-01 什么是湖仓一体?
• Chapter-02 深入探讨 Lakehouse 和 Delta Lake 的外部工作原理
• Chapter-03 探索 Delta Engine
本文介绍内容
Delta Lake 系列电子书由 Databricks 出版,阿里云计算平台事业部大数据生态企业团队翻译,旨在帮忙领导者和实践者理解 Delta Lake 的全副性能以及它所处的场景。在本文中,Delta Lake 系列 - 湖仓一体(Lakehouse),重点介绍湖仓一体。
后续
读完本文后,您不仅能够理解 Delta Lake 提供了什么个性,还能够了解这些个性是如何带来实质性的性能改良的。
什么是数据湖?
Delta Lake 是一个对立的数据管理系统,可为云数据湖带来数据可靠性和疾速剖析能力。Delta Lake 能够在现有数据湖之上运行,并且与 Apache Spark API 齐全兼容。
在 Databricks 公司外部,咱们曾经看到了 Delta Lake 如何为数据湖带来可靠性保障,性能优化和生命周期治理。应用 Delta Lake 能够解决以下问题:数据格式谬误,数据合规性删除或对个别数据进行批改。同时,借助 Delta Lake,高质量数据能够疾速写入数据湖,通过云服务(平安且可扩大)部署以进步数据的利用效率。
Chapter-01 什么是湖仓一体?
在过来的几年里,Lakehouse 作为一种新的数据管理范式,已独立呈现在 Databricks 的许多用户和利用案例中。在这篇文章中,咱们将论述这种新范式以及它绝对于之前计划的劣势。
数据仓库在决策反对和商业智能应用程序方面领有悠久的历史。自 1980 年代末创立以来,数据仓库技术始终在倒退,MPP 架构使得零碎可能解决更大规模的数据量。
只管仓库非常适合结构化数据,然而许多古代企业必须解决非结构化数据,半结构化数据以及具备高多样性、高速度和高容量的数据。数据仓库不适用于许多此类场景,并且老本效益并非最佳。
随着公司开始从许多不同的起源收集大量数据,架构师们开始构想一个繁多的零碎来包容许多不同的剖析产品和工作工作产生的数据。
大概十年前,咱们开始建设数据湖——一种多种格局的原始数据的存储数据库。数据湖尽管适宜存储数据,但短少一些要害性能:它们不反对事务处理,不保证数据品质,并且不足一致性 / 隔离性,从而简直无奈实现混合追加和读取数据,以及实现批处理和流式作业。因为这些起因,数据湖的许多性能尚未实现,并且在很多时候丢失了数据湖的劣势。
很多公司对各类数据利用包含 SQL 剖析、实时监控、数据迷信和机器学习的灵活性、高性能零碎的需要并未缩小。AI 的大部分最新进展是基于更好地解决非结构化数据(如 text、images、video、audio)的模型,但这些恰好是数据仓库未针对优化的数据类型。一种常见的解决方案是应用交融数据湖、多个数据仓库以及其余的如流、工夫序列、图和图像数据库的零碎。然而,保护这一整套零碎是非常复杂的(保护老本绝对较高)。此外,数据业余人员通常须要跨零碎进行数据的挪动或复制,这又会导致肯定的提早。
湖仓一体整合了数据湖和数据仓库二者的劣势
Lakehouse 是一种联合了数据湖和数据仓库劣势的新范式,解决了数据湖的局限性。Lakehouse 应用新的零碎设计:间接在用于数据湖的低成本存储上实现与数据仓库中相似的数据结构和数据管理性能。如果你当初须要从新设计数据仓库,当初有了便宜且高牢靠(以对象存储的格局)的存储可用,无妨思考应用 Lakehouse。
Lakehouse 有如下要害个性:
- 事物反对:Lakehouse 在企业级利用中,许多数据管道通常会同时读取和写入数据。通常多方同时应用 SQL 读取或写入数据,Lakehouse 保障反对 ACID 事务的一致性。
- 模式施行和治理:Lakehouse 应该有一种反对模式施行和演变的办法,反对 DW 模式标准,例如 star /snowflake-schemas。该零碎应该可能推理数据完整性,并且应该具备强壮的治理和审核机制。
- BI 反对:Lakehouse 能够间接在源数据上应用 BI 工具。这样能够缩小古老度和等待时间,进步早先度,并且升高必须在数据湖和仓库中操作两个数据正本的老本。
- 存储与计算拆散:事实上,这意味着存储和计算应用独自的群集,因而这些零碎可能扩大到更多并发用户和更大数据量。一些古代数据仓库也具备这种属性。
- 兼容性:Lakehouse 应用的存储格局是开放式和标准化的,例如 Parquet,并且它提供了多种 API,包含机器学习和 Python/R 库,因而各种工具和引擎都能够间接无效地拜访数据。
- 反对从非结构化数据到结构化数据的多种数据类型:Lakehouse 可用于存储,优化,剖析和拜访许多新数据应用程序所需的数据类型,包含图像,视频,音频,半结构化数据和文本。
- 反对各种工作场景:包含数据迷信,机器学习和 SQL 剖析。这些可能依赖于多种工具来反对的工作场景,它们都依赖于雷同的数据存储库。
- 端到端流式工作:实时报告是许多企业的日常须要。对流解决的反对打消了对专门服务于实时数据应用程序的独自零碎的需要。
这些是 Lakehouse 的要害特色。企业级零碎须要更多功能。平安和访问控制工具是根本需要。尤其是依据最近的隐衷法规,包含审核,保留和因循在内的数据治理性能已变得至关重要,诸如数据目录和数据应用量度等数据发现工具也须要被启用。应用 Lakehouse,上述企业特点只须要在单套零碎中被部署、测试和治理。
浏览以下钻研 Delta Lake:基于云对象存储的高性能 ACID 表存储
摘要:
云对象存储(例如阿里云 OSS)是一些现有的最大、最具老本效益的存储系统,它是存储大型数据仓库和数据湖的次要抉择。具备局限性的是,它们作为键值存储的实现形式使其很难实现 ACID 事务和高性能,因为元数据操作(例如列出对象)十分低廉,并且一致性保障受到限制。在本文中,咱们介绍了 Delta Lake,这是最后由 Databricks 开发的基于云对象存储的开源 ACID 表存储层。Delta Lake 应用 Apache Parquet 压缩格局的事务日志来为大型表格数据集提供 ACID 属性,工夫旅行和疾速的元数据操作(例如,可能疾速在数十亿个分区中搜寻查问)。它还利用此设计来提供高级性能,例如主动数据布局优化、更新、缓存和审核日志。咱们能够从 Apache Spark,Hive,Presto,Redshift 和其余零碎拜访 Delta Lake 表。Delta Lake 部署在数以千计的 Databricks 客户中,这些客户每天解决 EB 级数据,最大的实例治理 EB 级数据集和数十亿个对象。
作者:Michael Armbrust, Tathagata Das, Liwen Sun, Burak Yavuz, Shixiong Zhu, Mukul Murthy, Joseph Torres, Herman van HÖvell, Adrian Ionescu, Alicja Łuszczak, Michał Szafra ń ski, Xiao Li, Takuya Ueshin, Mostafa Mokhtar, Peter Boncz, Ali Ghodsi, Sameer Paranjpye, Pieter Senster, Reynold Xin, Matei Zaharia
原文 Inner workings of the lakehouse.
晚期案例
Databricks 对立数据平台在架构上反对 lakehouse。阿里巴巴的 DDI 服务,曾经与 Databricks 集成,实现了相似 Lakehouse 的模式。其余托管服务(例如 BigQuery 和 Redshift Spectrum)具备下面列出的一些 LakeHouse 性能个性,但它们是次要针对 BI 和其余 SQL 利用。对于想要构建和实现本人零碎的公司,可参考适宜构建 Lakehouse 的开源文件格式(Delta Lake,Apache Iceberg,Apache Hudi)。
将数据湖和数据仓库合并到一个零碎中意味着数据团队能够更快地挪动数据,因为他们可能应用数据而无需拜访多个零碎。在这些晚期的 Lakehouse 中,SQL 反对以及与 BI 工具的集成通常足以满足大多数企业数据仓库的需要。实例化视图和存储过程是能够应用的,然而用户可能须要采纳其余机制,这些机制与传统数据仓库中的机制不同。后者对于“升降场景”尤为重要,“升降场景”要求零碎所具备的语义与旧的商业数据仓库的语义简直雷同。
对其余类型的数据应用程序的反对是怎么的呢?Lakehouse 的用户能够应用各种规范工具(Apache Spark,Python,R,机器学习库)来解决非 BI 工作,例如数据迷信和机器学习。数据摸索和欠缺是许多剖析和数据迷信应用程序的规范。Delta Lake 旨在让用户逐渐改善 Lakehouse 中的数据品质,直到能够应用为止。
只管能够将分布式文件系统用于存储层,但对象存储更实用于 Lakehouse。对象存储提供了低成本,高可用性的存储,在大规模并行读取方面表现出色,这是古代数据仓库的根本要求。
从 BI 到 AI
Lakehouse 是一种新的数据管理体系结构,在机器学习笼罩各行各业的时代,它能够从根本上简化企业数据基础架构并减速翻新。过来,公司产品或决策中波及的大多数数据都是来自操作系统的结构化数据。而现在,许多产品都以计算机视觉和语音模型,文本开掘等模式集成了 AI。为什么要应用 Lakehouse 而不是数据湖来进行 AI?Lakehouse 可为您提供数据版本控制、治理、安全性和 ACID 属性,即便对于非结构化数据也是如此。
以后 Lakehouse 升高了老本,然而它们的性能依然落后于理论投入和部署多年的专用零碎(例如数据仓库)。用户可能会偏爱某些工具(BI 工具,IDE,notebook),因而 Lakehouse 还须要改良其 UX 以及与风行工具的连接器来吸引更多用户。随着技术的一直成熟和倒退,这些问题都将失去解决。随着技术提高,Lakehouse 将放大这些差距,并且同时保留更简略,更具老本效益和更能服务于各种数据应用程序的外围属性。
Chapter02 深入探讨 Lakehouse 和 Delta Lake 的外部工作原理
Databricks 写了一篇博客,概述了越来越多的企业采纳 Lakehouse 模式。该博客引起了技术爱好者的极大趣味。只管许多人称誉它为下一代数据体系结构,但有些人认为湖仓一体与数据湖是一回事。最近,咱们的几位工程师和创始人写了一篇钻研论文,形容了使湖仓一体架构与数据湖区离开的一些核心技术挑战和解决方案,该论文已在 The International Conference on Very Large Databases (VLDB) 2020 承受并发表,“Delta Lake: High-Performance ACID Table Storage Over Cloud Object Stores”。
十多年前,云为数据存储开拓了新的倒退方向。像 Amazon S3 这样的云对象存储已成为世界上一些最大,最具老本效益的存储系统,这使它们成为更有吸引力的数据存储仓库和数据湖平台。然而,它们作为键值存储的性质使得许多公司所需的 ACID 事物个性变得艰难。而且,低廉的元数据操作 (例如列出对象) 和受限的一致性保障也影响了性能。
基于云对象存储的特点,呈现了三种计划:
Data lakes (数据湖)
Data lakes 将表存储为对象汇合的文件目录(即数据湖),通常应用列式(例如 Apache Parquet)存储。这是一种独特的办法。因为表只是一组对象,能够通过多种工具进行拜访,而无需应用其余数据存储系统,然而这样会导致性能和一致性问题。性能上因为事务执行失败导致暗藏的数据损坏的状况时有发生,最终导致查问不统一,等待时间长,并且根本的治理性能(如表版本控制和审核日志)不可用。
Custom storage engines (自定义存储引擎)
第二种办法是定制存储引擎,例如为云构建的专有零碎,如 Snowflake 数据仓库。这些零碎能够提供繁多的数据源,通过在独立且高度一致的服务中治理元数据,从而能够防止数据湖的一致性挑战。然而,所有 I/O 操作都须要连贯到此元数据服务,这可能会减少云资源老本并升高性能和可用性。此外,要实现现有计算引擎(例如 Apache Spark,Tensorflow 和 Pytorch)的连接器还须要进行大量工程化工作,这对于应用各种计算引擎的数据处理团队而言可能是一个挑战。非结构化数据会加剧工程上的挑战,因为这些零碎通常针对传统的结构化数据类型进行了优化。最令人不能承受的是,专有元数据服务将客户锁定在特定的服务提供商中,如果客户未来决定采纳新服务,他们将不得不面对始终昂扬的价格和费时的迁徙老本。
Lakehouse (湖仓一体)
Delta Lake 是一种云对象存储之上的开源 ACID 表存储层。好比咱们寻求建造一辆汽车,而不是寻找更快的马。湖仓一体是一种新架构,联合了数据湖和数据仓库的劣势。它不仅领有更好的数据存储性能,而且在存储和应用数据的形式上产生了根本性的变动。新的零碎设计反对 Lakehouse:间接在用于数据湖的低成本存储上实现与数据仓库中相似的数据结构和数据管理性能。如果您想要设计新的存储引擎,那么这种价格低廉且可靠性高的存储(以对象存储的模式)就是您所想要的。
Delta Lake 应用压缩到 Parquet 中的预写日志,以 ACID 形式保护数据表的局部对象信息,该日志也会存储在云对象存储中。这种设计容许客户端一次更新多个对象,以可串行化的形式用另一个对象替换对象的一个子集,从而能够取得很高的并行读 / 写性能。该日志还为大型表格数据集提供了显着更快的元数据操作。
Delta Lake 还提供了:工夫旅行(数据版本控制反对回滚),主动优化小文件,更新反对,缓存和审核日志。这些性能共同提高了在云对象存储中解决数据的可管理性和性能,最终为 Lakehouse 架构关上了大门。该架构联合了数据仓库和数据湖的要害性能,创立了更好,更简略的数据架构。
现在,Delta Lake 已被成千上万的 Databricks 客户以及开源社区中的许多组织所应用,每天解决数十亿字节的结构化和非结构化数据。这些用例涵盖了各种数据源和应用程序。存储的数据类型包含来自企业 OLTP 零碎的更改数据捕捉(CDC)日志,应用程序日志,工夫序列数据,图形,用于报告的聚合表以及用于机器学习的图像或特色数据。这些应用程序包含 SQL 剖析工作(最常见),商业智能化,流解决,数据迷信,机器学习和图形剖析。总体而言,Delta Lake 已证实它非常适合大多数应用结构化存储格局(例如 Parquet 或 ORC)和许多传统数据仓库工作负载的数据湖应用程序。
在这些用例中,咱们发现客户常常应用 Delta Lake 来大幅简化其数据架构,他们间接针对云对象存储运行更多工作负载。更多时候,他们通过创立具备数据湖和事务性能的 Lakehouse 来替换音讯队列(例如 Apache Kafka),数据湖或云数据仓库(例如 Snowflake,Amazon Redshift)提供的局部或全副性能。
在上述这篇文章的钻研中,作者还提供了以下介绍:
• 对象存储的特色和挑战
• Delta Lake 的存储格局和拜访协定
• Delta Lake 目前的特色,劣势和局限性
• 当下罕用的外围用例和专用用例
• 性能试验,包含 TPC-DS 性能
通过本文,您将更好地理解 Delta Lake,以及它如何为低成本云存储中的数据启用相似于 DBMS 的性能和治理性能。您还将理解到 Delta Lake 的存储格局和拜访协定是如何帮忙它变得易于操作,高可用并可能提供对象存储的高带宽拜访。
Chapter03 探索 Delta Engine
Delta 引擎将与 Apache Spark 100%兼容的矢量化查问引擎分割在一起,通过利用古代 CPU 体系结构对 Spark 3.0 的查问优化器和缓存性能进行了优化,这些性能是作为 Databricks Runtime 7.0 的一部分推出的。这些性能加在一起,能够显着进步数据湖(尤其是由 Delta Lake 反对的数据湖)上的查问性能,从而使客户能够更轻松地采纳和扩大 Lakehouse 体系结构。
扩大执行性能
过来几年中最大的硬件变化趋势之一是 CPU 时钟速度已趋于平稳。其具体起因不在本章的探讨范畴之内,但重要的是,咱们必须找到新的办法来以超出原始计算能力的速度去更快地解决数据。一个最无效的办法是进步能够并行处理的数据量。然而,数据处理引擎须要专门设计以利用这种并行性。
此外,随着业务步调的放慢,留给研发团队提供良好的数据建模的工夫越来越少。为了更好的业务敏捷性而进行的较差的建模会导致较差的查问性能。因而,这不是现实的状态,咱们心愿找到使敏捷性和性能最大化的办法。
提出高查问性能的 Delta Engine
Delta Engine 通过三个组件来进步 Delta Lake 的 SQL 和 DataFrame 工作负载的性能:一个改进好的查问优化器,一个位于执行层和云对象存储之间的缓存层,一个用 C ++ 编写的本机矢量执行引擎。
改良的查问优化器通过更优化的统计信息扩大了 Spark 3.0 中已有的性能(基于老本的优化器,自适应查问执行和动静运行时过滤器),从而使星型架构工作负载的性能进步了 18 倍。
Delta Engine 的缓存层会主动抉择要为用户缓存的输出数据,并以更高效的 CPU 格局对代码进行转码,从而更好地利用 NVMe SSD 的更高存储速度。简直所有工作负载的扫描性能最高可进步 5 倍。
事实上,Delta Engine 的最大翻新点是本地执行引擎,它解决了当今数据团队所面临的挑战,咱们将其称为 Photon(家喻户晓,它是一个引擎中的引擎)。这个齐全重构的 Databricks 执行引擎的构建旨在最大限度地进步古代云硬件中新变动带来的性能。它为所有工作负载类型带来了性能改良,同时仍与开源 Spark API 齐全兼容。
Delta Engine 入门
通过将这三个组件链接在一起,客户将更容易了解 Databricks 是如何将多个局部的代码聚合在一起进行改良,从而大大提高在数据湖上进行剖析的工作负载的性能。
咱们对 Delta Engine 为客户带来的价值感到兴奋。它在工夫和老本的节约方面具备很大价值。更重要的是在 Lakehouse 模式中,它反对数据团队设计数据体系结构以进步统一性和简化性,并获得很多新进展。
无关 Delta Engine 详情,请观看 Spark + AI Summit 2020 上的主题演讲:Delta Engine: High-Performance Query Engine for Delta Lake。
后续
您曾经理解了 Delta Lake 及其个性,以及如何进行性能优化,本系列还包含其余内容:
• Delta Lake 技术系列 - 根底和性能
• Delta Lake 技术系列 - 个性
• Delta Lake 技术系列 -Streaming
• Delta Lake 技术系列 - 客户用例(Use Case)
原文链接
本文为阿里云原创内容,未经容许不得转载。