在过去的几年里,Lakehouse作为一种新的数据管理范式,已独立出现在Databricks的许多用户和应用案例中。在这篇文章中,我们将阐述这种新范式以及它相对于之前方案的优势。

数据仓库在决策支持和商业智能应用方面有着悠久的历史。自20世纪80年代末问世以来,数据仓库技术一直在持续不断的发展,并且MPP体系架构使系统能够处理更大的数据量。尽管数据仓库非常适合处理结构化数据,但是对于很多现代企业,对非结构化数据、半结构化数据以及具有高多样性、高速度、高容量特性的数据处理也往往是必须的,数据仓库并不适用于此类场景的处理,并且成本方面也不是最具效益的。

随着很多公司开始从很多不同的数据源收集大量数据,架构师开始构想通过一个单一的系统来容纳不同分析产品和工作负载的数据。大约十年前,很多公司开始构建数据湖(存储各种格式原始数据的仓库)。虽然数据湖适合存储数据,但缺少一些关键功能(如不支持事务、无法提高数据质量、缺乏一致性/隔离性)导致几乎不可能融合处理数据的追加和读取、批和流处理任务。由于这些原因,数据湖之前的许多承诺没有兑现,并且在许多情况下还会丧失数据仓库原本的很多优势。

很多公司对各类数据应用包括SQL分析、实时监控、数据科学和机器学习的灵活性、高性能系统的需求并未减少。AI的大部分最新进展是有可用于更好处理非结构化数据(如text、images、video、audio)的模型,但这些恰恰是数据仓库未针对优化的数据类型。一种常见的解决方案是使用融合了数据湖、多个数据仓库以及其他的如流、时间序列、图和图像数据库的系统。但是维护这一整套系统是非常复杂的(维护成本相对较高),此外,数据专业人员通常需要跨系统进行数据的移动或复制,这又会导致一定的延迟。

什么是Lakehouse?

Lakehouse是一种结合了数据湖和数据仓库优势的新范式,解决了数据湖的局限性。Lakehouse使用新的系统设计:直接在用于数据湖的低成本存储上实现与数据仓库中类似的数据结构和数据管理功能。如果你现在需要重新设计数据仓库,现在有了廉价且高可靠(以对象存储的格式)的存储可用,不妨考虑使用Lakehouse。

Lakehouse有如下关键特性:

  • 事务支持   

    •   企业内部许多数据管道通常会并发读写数据。对ACID事务的支持确保了多方并发读写数据时的一致性问题
  • Schema enforcement and governance
    •   Lakehouse应该有一种方式可以支持模式执行和演进、支持DW schema的范式(如星星或雪花模型),能够对数据完整性进行推理,并且具有健壮的治理和审计机制
  • BI支持
    •   Lakehouse可以直接在源数据上使用BI工具。这样可以提高数据新鲜度、减少延迟,并且降低了在数据池和数据仓库中操作两个数据副本的成本
  • 存储与计算分离
    •   在实践中,这意味着存储和计算使用单独的集群,因此这些系统能够扩展到支持更大的用户并发和数据量。一些现代数仓也具有此属性
  • 开放性
    •   使用的存储格式是开放式和标准化的(如parquet),并且为各类工具和引擎,包括机器学习和Python/R库,提供API,以便它们可以直接有效地访问数据
  • 支持从非结构化数据到结构化数据的多种数据类型
    •   Lakehouse可用于存储、优化、分析和访问许多数据应用所需的包括image、video、audio、text以及半结构化数据
  • 支持各种工作负载

    包括数据科学、机器学习以及SQL和分析。可能需要多种工具来支持这些工作负载,但它们底层都依赖同一数据存储库

  • 端到端流

    实时报表是许多企业中的标准应用。对流的支持消除了需要构建单独系统来专门用于服务实时数据应用的需求。

作为企业级的系统,除了要求具有以上特性外,还需要其他额外的功能特性。比如安全和访问控制工具是基本要求。特别是考虑到最近的隐私法规,数据治理功能变得至关重要(包括审计、保留和血缘关系)。对于数据发现工具,例如数据catalog和数据使用metrics也是需要的。

通过使用Lakehouse,这些企业功能特性只需要在一个系统中就能达到实现、测试和管理的目的。

 

早期示例

Databricks平台具有Lakehouse的特性。

微软的Azure Synapse Analytics服务与Azure Databricks集成,可实现类似Lakehouse模式。其他托管服务(例如BigQuery和Redshift Spectrum)具有上面列出的一些LakeHouse功能特性,但它们是主要针对BI和其他SQL应用。对于想要构建和实现自己系统的公司,可参考适合构建Lakehouse的开源文件格式(Delta Lake,Apache Iceberg,Apache Hudi)。

将数据湖和数据仓库合并至一个系统可以避免数据团队不必要的跨多个系统进行数据的访问,从而提高效率。对于大多数企业数据仓库来说,这些早期的Lakehouse中的SQL支持和与BI工具的集成级别通常已经能够满足需求。虽然可以使用物化视图和存储过程,但用户可能需要使用其他与传统数据仓库中的机制不同的机制。后者对于"lift and shift scenarios"(要求系统实现与旧的商业数据仓库几乎相同的语义)尤为重要。

Lakehouse对其他类型数据应用的支持又如何呢?Lakehouse的用户可以使用各种标准工具(Spark,Python,R,机器学习库)来处理像数据科学和机器学习等非BI工作负载。数据探索和精化是许多分析和数据科学应用的标准。Delta Lake的设计目的是让用户逐步提高Lakehouse中数据质量,直到数据可以使用为止(关于Delta Lake,建议阅读:

https://databricks.com/blog/2020/02/24/introducing-databricks-ingest-easy-data-ingestion-into-delta-lake.html)。

虽然分布式文件系统可以用于存储层,但对象存储在Lakehouse中更为常见。对象存储提供低成本、高可用的存储,在大规模并发读取方面表现出色,这是现代数据仓库的基本要求。

 

从BI到AI

Lakehouse是一种新的数据管理范式,它从根本上简化了企业数据基础设施,并且有望在机器学习即将颠覆每个行业的时代加速创新。过去,公司产品或决策过程中涉及的大多数数据都是来自操作系统的结构化数据,而如今,许多产品以计算机视觉和语音模型、文本挖掘等形式将AI融入其中。为什么要用Lakehouse而不是数据湖来进行AI?Lakehouse提供了数据版本控制、治理、安全性和ACID属性,即使是非结构化数据也需要这些属性。

当前Lakehouse降低了成本,但其性能仍可能落后于拥有多年投资和实际部署的专业系统(如数据仓库)。用户可能更喜欢某些工具(BI工具、IDEs, notebooks),因此Lakehouse还需要改进其用户体验和与流行工具的连接,以便更具吸引力。随着技术的不断发展和成熟,这些问题将得到解决。随着时间的推移,Lakehouse将缩小这些差距,同时保留更简单、更具成本效益和更能为多种数据应用服务的核心特性。

本文参译于:

https://databricks.com/blog/2020/01/30/what-is-a-data-lakehouse.html —— by Ben Lorica, Michael Armbrust, Ali Ghodsi, Reynold Xin and Matei Zaharia Posted in Company Blog | January 30, 2020


关注微信公众号:大数据学习与分享,获取更对技术干货

Databricks说的Lakehouse是什么?的更多相关文章

  1. 什么是LakeHouse?

    1. 引入 在Databricks的过去几年中,我们看到了一种新的数据管理范式,该范式出现在许多客户和案例中:LakeHouse.在这篇文章中,我们将描述这种新范式及其相对于先前方案的优势. 数据仓库 ...

  2. Hive实现自增序列及常见的Hive元数据问题处理

    Hive实现自增序列 在利用数据仓库进行数据处理时,通常有这样一个业务场景,为一个Hive表新增一列自增字段(比如事实表和维度表之间的"代理主键").虽然Hive不像RDBMS如m ...

  3. 对话Apache Hudi VP, 洞悉数据湖的过去现在和未来

    Apache Hudi是一个开源数据湖管理平台,用于简化增量数据处理和数据管道开发,该平台可以有效地管理业务需求,例如数据生命周期,并提高数据质量.Hudi的一些常见用例是记录级的插入.更新和删除.简 ...

  4. Lakehouse: 统一数据仓库和高级分析的新一代开放平台

    1. 摘要 数仓架构在未来一段时间内会逐渐消亡,会被一种新的Lakehouse架构取代,该架构主要有如下特性 基于开放的数据格式,如Parquet: 机器学习和数据科学将被作为头等公民支持: 提供卓越 ...

  5. 使用Apache Pulsar + Hudi构建Lakehouse方案了解下?

    1. 动机 Lakehouse最早由Databricks公司提出,其可作为低成本.直接访问云存储并提供传统DBMS管系统性能和ACID事务.版本.审计.索引.缓存.查询优化的数据管理系统,Lakeho ...

  6. 基于 Apache Hudi 和DBT 构建开放的Lakehouse

    本博客的重点展示如何利用增量数据处理和执行字段级更新来构建一个开放式 Lakehouse. 我们很高兴地宣布,用户现在可以使用 Apache Hudi + dbt 来构建开放Lakehouse. 在深 ...

  7. Databricks缓存提升Spark性能--为什么NVMe固态硬盘能够提升10倍缓存性能(原创)

    我们兴奋的宣布Databricks缓存的通用可用性,作为统一分析平台一部分的 Databricks 运行时特性,它可以将Spark工作负载的扫描速度提升10倍,并且这种改变无需任何代码修改. 1.在本 ...

  8. 转载:Databricks孟祥瑞:ALS 在 Spark MLlib 中的实现

    Databricks孟祥瑞:ALS 在 Spark MLlib 中的实现 发表于2015-05-07 21:58| 10255次阅读| 来源<程序员>电子刊| 9 条评论| 作者孟祥瑞 大 ...

  9. 新挖个坑,准备学习一下databricks的spark博客

    挖坑 https://databricks.com/blog 一.spark3.0特性(Introducing Apache Spark 3.0) 1.通过通过自适应查询执行,动态分区修剪和其他优化使 ...

随机推荐

  1. golang API 请求队列

    概要 实现思路 使用方法 启动队列服务 使用队列服务 概要 在调用第三方 API 的时候, 基本都有访问限速的限制条件. 第三方的 API 有多个的时候, 就不太好控制访问速度, 常常会导致 HTTP ...

  2. docker启动服务---------------mysql

    1.查找镜像: docker search mysql 也可以去官网查看镜像tag,选择自己需要的版本,否则会下载最新版本:https://hub.docker.com/_/mysql/ 2.下载镜像 ...

  3. gorm学习地址

    1 gorm curd指南 2 gorm入门指南

  4. 转 mysql show processlist 查看当前连接

    show processlist和show full processlist processlist命令的输出结果显示了有哪些线程在运行,不仅可以查看当前所有的连接数,还可以查看当前的连接状态帮助识别 ...

  5. docker的常用操作之三:网络配置

    一, docker安装后容器使用哪些网络类型? 在宿主机执行如下命令: [root@localhost liuhongdi]# docker network ls NETWORK ID NAME DR ...

  6. centos8平台使用blkid查看分区信息

    一,blkid的用途 blkid 命令是一个命令行工具,它可以显示关于可用块设备的信息 说明:刘宏缔的架构森林是一个专注架构的博客,地址:https://www.cnblogs.com/archite ...

  7. ubuntu基于VSCode的C++编程语言的构建调试环境搭建指南

    ubuntu基于VSCode的C++编程语言的构建调试环境搭建指南 首先安装g++ sudo apt install g++ 检查是否安装成功: 在插件栏安装插件c/c++.code runner: ...

  8. 5G-第五代移动通信系统(5th generation mobile/wireless/cellular system)

    通信系统 有意义的信息交流被称为通讯. 自然界:狼嚎.狗叫.虫鸣.鸡叫. 人类社会:说话.眼神.写信.烽火台. 目的:信息的传递. 人类发明电以后,开始使用电来传递信息,特别快. 于是有了电报.电话以 ...

  9. 学会这三个命令,你就不再是git只会用三板斧的菜鸟了

    前言 在之前的文章当中我们介绍了最基本的git add.git commit和git push的用法以及基本原理,还介绍了gitignore文件的设置方法,从而让我们可以使用git add .来添加我 ...

  10. ServletRequest使用介绍

    ServletRequest: 定义将客户端请求信息提供给某个 servlet 的对象:servlet 容器创建 ServletRequest 对象,并将该对象作为参数传递给该servlet的serv ...