【译】什么是 Lakehouse(湖仓)
原文:What is a Lakehouse?
在过去的几年中,我们在 Databricks 看到了一个新的数据管理架构,它独立出现在许多客户和用例中:Lakehouse。在这篇文章中,我们将描述这种新架构及其相对于以前方法的优势。
数据仓库在决策支持和商业智能应用程序方面拥有悠久的历史[1]。自 1980 年代末创建以来,数据仓库技术一直在发展,MPP 体系架构使得系统能够处理更大的数据量。仓库非常适合结构化数据,但许多现代企业必须处理非结构化数据,半结构化数据以及具有高多样性,高速度和高容量的数据。数据仓库不适用于许多此类用例,并且肯定不是最具成本效益的。
随着公司开始从许多不同的来源收集大量数据,架构师开始设想用一个单一的系统来存储许多不同分析产品和工作负载的数据。大约十年前,公司开始建立数据湖——各种格式的原始数据存储库。虽然适合存储数据,但数据湖缺乏一些关键特性:它们不支持事务,它们不提高数据质量,它们缺乏一致性(隔离性),这使得几乎不可能混合追加和读取、批处理和流作业。由于这些原因,数据湖的许多承诺没有实现,并且在许多情况下导致数据仓库的许多好处的丧失。
对灵活、高性能系统的需求并未减弱。公司需要用于各种数据应用的系统,包括 SQL 分析、实时监控、数据科学和机器学习。人工智能的大部分最新进展都是在处理非结构化数据(文本、图像、视频、音频)的更好模型上,但这些恰恰是数据仓库无法优化的数据类型。一种常见的方法是使用多个系统——一个数据湖、几个数据仓库和其他专门的系统,如数据流、时间序列、图形和图像数据库。拥有多个系统会带来复杂性,更重要的是,会带来延迟,因为数据专业人员总是需要在不同的系统之间移动或复制数据。
什么是 Lakehouse?
解决数据湖局限性的新系统开始出现。Lakehouse 是一种新的开放式架构,结合了数据湖和数据仓库的最佳元素。新的开放式和标准化系统设计支持 Lakehouse:直接在用于数据湖的低成本存储上实现与数据仓库中类似的数据结构和数据管理功能。如果您现在可以廉价且高度可靠的存储(以对象存储的形式),那么如果您不得不在现代世界中重新设计数据仓库,就会得到它们。
Lakehouse 具有以下关键特征:
事务支持:在企业内部,许多数据管道通常会同时读取和写入数据。对 ACID 事务的支持确保了一致性,因为多方通常使用 SQL 同时读取或写入数据。 模式执行和治理: Lakehouse 应该有一种方式来支持模式的实施和发展,支持星型/雪花型模式之类的 DW 模式架构。系统应该能够推断数据完整性,并且应该具有健壮的治理和审计机制。。 BI 支持: Lakehouse 允许直接在源数据上使用 BI 工具。这减少了过时性,提高了近时性,减少了延迟,并降低了在数据湖和数据仓库中操作数据的两个副本的成本。 存储与计算脱钩:实际上,这意味着存储和计算使用单独的群集,因此这些系统能够扩展到更多并发用户和更大的数据量。一些现代数据仓库也具有此属性。 开放性:使用的存储格式是开放式和标准化的,例如 Parquet,并且提供了 API,因此各种工具和引擎(包括机器学习和 Python / R 库)可以直接有效地访问数据。 支持从非结构化数据到结构化数据的多种数据类型:Lakehouse 可用于存储,优化,分析和访问许多新数据应用程序所需的数据类型,包括图像,视频,音频,半结构化数据和文本。 支持各种工作负载:包括数据科学,机器学习以及 SQL 和分析。可能需要多种工具来支持所有这些工作负载,但它们都依赖于同一数据存储库。 端到端流:实时报告是许多企业中的标准。对流的支持消除了对专门用于服务实时数据应用程序的单独系统的需求。
这些是 Lakehouse 的关键特征。企业级系统需要额外的功能。用于安全和访问控制的工具是基本需求。数据治理功能(包括审计、保留和传承)已经变得非常重要,特别是根据最近的隐私法规。还需要支持数据发现的工具,如数据目录和数据使用度量。对于 lakehouse,这样的企业特性只需要针对单个系统实现、测试和管理。
更详细内容,推荐阅读有关 Lakehouse 内部工作原理[2]的完整研究论文。
一些早期的例子
Databricks 平台[3]具有 Lakehouse 的架构特点。与Azure Databricks 集成的[4]Microsoft 的 Azure Synapse Analytics[5] 服务可实现类似的 Lakehouse 模式。其他托管服务(例如BigQuery[6]和Redshift Spectrum[7])具有上面列出的一些 Lakehouse 功能,但它们是主要针对 BI 和其他 SQL 应用程序的示例。希望构建和实现自己系统的公司可以访问适合构建 Lakehouse 的开源项目(Delta Lake[8],Apache Iceberg[9]和Apache Hudi[10])。
将数据湖和数据仓库合并到一个系统中意味着数据团队可以更快地移动,因为他们可以使用数据而无需访问多个系统。在这些早期的 Lakehouse 中,SQL 支持水平以及与 BI 工具的集成通常足以满足大多数企业数据仓库的需求。可以使用实例化视图和存储过程,但用户可能需要采用其他机制,这些机制与传统数据仓库中的机制不同。后者对于“提升和转移场景[11]”尤为重要,提升和转移场景
要求系统实现的语义与旧的商业数据仓库的语义几乎相同。
对其他类型的数据应用程序的支持又如何呢?Lakehouse 的用户可以访问用于非 BI 工作负载的各种标准工具(Spark[12],Python,R,机器学习库),例如数据科学和机器学习。数据探索和完善是许多分析和数据科学应用程序的标准。Delta Lake 旨在让用户逐步改善其 Lakehouse 中的数据质量,直到可以使用为止。
关于技术构建块的说明。虽然分布式文件系统
可以用于存储层,但对象存储
更常用在 Lakehouse 中。对象存储提供低成本、高可用性的存储,适合大规模并行读取——这是现代数据仓库的基本要求。
从 BI 到 AI
Lakehouse 是一种新的数据管理体系结构,在机器学习准备颠覆每个行业的时代,它可以从根本上简化企业数据基础架构并加速创新。过去,公司产品或决策制定过程中使用的大多数数据都是来自操作系统的结构化数据,而如今,许多产品都以计算机视觉和语音模型,文本挖掘等形式集成了 AI。为什么要使用 Lakehouse 而不是数据湖来进行 AI?Lakehouse 可为您提供数据版本控制,治理,安全性和 ACID 属性,即使对于非结构化数据也是如此。
当前的 Lakehouse 降低了成本,但它们的性能仍然落后于专门的系统(例如数据仓库),而这些专业系统却需要数年的投资和实际部署。用户可能会偏爱某些工具(BI 工具,IDE,笔记本电脑),因此 Lakehouse 还需要改进其 UX 和与流行工具的连接器,以便吸引各种角色。随着技术的不断成熟和发展,这些和其他问题将得到解决。随着时间的流逝,Lakehouse 将缩小这些差距,同时保留其更简单,更具成本效益以及更能为各种数据应用提供服务的核心属性。
参考资料
悠久的历史: https://en.wikipedia.org/wiki/Data_warehouse#History
[2]有关 Lakehouse 内部工作原理: https://databricks.com/research/delta-lake-high-performance-acid-table-storage-overcloud-object-stores
[3]Databricks 平台: https://databricks.com/product/unified-data-analytics-platform
[4]Azure Databricks 集成的: https://databricks.com/blog/2019/11/04/new-microsoft-azure-data-warehouse-service-and-azure-databricks-combine-analytics-bi-and-data-science.html
[5]Azure Synapse Analytics: https://azure.microsoft.com/en-us/blog/simply-unmatched-truly-limitless-announcing-azure-synapse-analytics/
[6]BigQuery: https://cloud.google.com/bigquery/
[7]Redshift Spectrum: https://docs.aws.amazon.com/redshift/latest/dg/c-using-spectrum.html
[8]Delta Lake: https://delta.io/
[9]Apache Iceberg: https://iceberg.apache.org/
[10]Apache Hudi: https://hudi.apache.org/
[11]提升和转移场景: https://whatis.techtarget.com/definition/lift-and-shift
[12]Spark: https://databricks.com/glossary/apache-spark-as-a-service