随着>
湖仓一体的诞生
我们先来看下湖仓一体架构出现之前,数据平台经过了怎样的发展。根据 CCSA TC601 大数据技术标准推进委员会发布的《湖仓一体技术与产业研究报告(2023 年)》显示,数据平台架构持续演进主要经历了数据库、数据仓库、数据湖三个阶段,它们各自都有明显的优缺点:
既然数据仓库和数据湖有着非常明显的优缺点(见上表),就短暂地诞生过一种“湖仓混合”架构(见下图),企业将数据湖和数据仓库结合起来,以充分发挥它们各自的优势。例如,企业可以使用数据湖作为数据的原始存储和数据探索的平台,而将数据仓库用于数据集成、数据清洗和高性能的分析查询。但是,"数据湖 + 数据仓库"混合架构也有着明显的缺点:
由于现有架构中的数据仓库和数据湖有着各种各样的问题,湖仓一体架构就应运而生了,接下来我们来看看什么是湖仓一体。
湖仓一体是什么
Databricks 公司在 CIDR 2021 发表论文首次正式提出了 Lakehouse 的概念 ,但实际上湖仓一体的概念并非由单一个体提出,而是随着技术的发展和需求的变化逐渐形成的,下图分别列举了国外主流厂商对 Lakehouse 的理解。
与"湖 + 仓"混合架构简单地把数据湖和数据仓库进行简单的堆积不同,湖仓一体架构(Lakehouse)是一种新兴的数据架构,将数据湖和数据仓库的特点融合在一起。它旨在解决传统数据湖和数据仓库各自的局限性,并提供更强大的数据管理和分析能力。湖仓一体架构的特点如下:
湖仓一体架构通过将数据湖和数据仓库的优势结合起来,提供了更灵活、可扩展和强大的数据管理和分析能力。它适用于各种数据场景,包括实时分析、机器学习、数据探索和报表等。
传统数据仓库和数据湖的老玩家,演进到湖仓一体架构有两个主要方向:一是“湖上建仓”,即在数据湖的基础上构建数据仓库,保留数据湖的灵活性和可扩展性,同时引入数据仓库的治理和分析能力,典型的例子是>
湖仓一体发展趋势
随着用户场景和业务需求的不断变化,湖仓一体架构在发展过程中也出现了新的趋势。Dremio 在 2023 年发表的论文《The>
模块化的湖仓一体架构,核心模块包括以下几个方面:
模块化的设计让湖仓一体架构更加清晰和可解释,这个观点与 Voltron>
Voltron>
开放式湖仓才是未来
传统数据仓库对用户最大的困扰是很容易被运营商锁定(Vendor Lock-in),通常有以下几个原因:
湖仓一体架构发展到今天,其最吸引人的一个特点就是就是数据开放性,这是因为其独特的模块化设计带来的:
值得一提的是,有些厂商声称自己是“开放式”湖仓一体架构,但所谓的“开放”实际是存算分离架构的“开放”,其实是与开放式湖仓一体混为一谈。存算分离是一种大数据处理架构,它将存储和计算节点分开,数据节点负责数据的存储和管理,而计算任务则由单独的计算节点来负责执行。相对于传统的存算一体架构,存算分离架构设计使得系统能够扩展到更大规模的并发能力和数据容量。相较于湖仓一体架构的开放数据设计,存算一体架构只是把数据放在了存储节点上,并没有保证数据的开放性(如使用开源表格式 Apache Iceberg,或者开源文件格式 Apache Parquet 等),因此并不能认为存算分离架构也是开放的。
随着人工智能(AI)和大语言模型(LLM)的热潮,AI 给数据平台带来新的挑战:AI 需要更丰富的数据,数据需要更多样的 BI+AI 应用。Data 与 AI 的关系不再是>
云器开放式湖仓的设计理念
我们(云器科技)是一家新兴的数据平台服务提供商,主打多云及一体化的数据平台服务。我们依照 Open Lakehouse 的设计理念,实现了一套完整的系统,并服务多家头部客户。存储层设计兼容各种主流的开放存储格式,确保与广泛的数据环境的无缝集成:
文章前半部分讲述了 Open Lakehouse 的架构优势、设计目标和原则。文章后半部分,重点介绍我们在实现过程中的设计、取舍和经验总结。
云器开放式湖仓的设计实践
拥抱 Apache Iceberg 打造开放生态
Apache Iceberg、Apache Hudi 和 Delta Lake 是当前数据湖领域中的三种主要表格式,它们都在努力成为数据湖的标准表格式,这种竞争有时被形象地称为"Table Format War"。这三种表格式都是开源的,拥有非常好的生态,背后都有一个商业公司在支持。云器认为重复再造一个新的表格式的轮子并不能让 Lakehouse 更加地开放,因此选择一个最合适的表格式,围绕它构建 Lakehouse 的内置表格式,打造一个开放的生态是对用户最负责任的方案。
为什么是 Apache Iceberg
来自 Tabular(Apache Iceberg 背后的商业公司)的 Brian Olsen 在 2023 年 7 月发表了一篇文章 Iceberg won the table format war,他认为 Apache Iceberg 已经在这场表格式的竞争中取得了胜利。其观点基本符合我们的看法,也是云器科技选择使用 Apache Iceberg 作为开放存储底座的原因:
如何基于 Apache Iceberg 构建通用的增量存储
云器 Lakehouse 使用 Apache Iceberg 表格式,以及 Apache Parquet 文件格式,打造了一个能够实时兼容 Apache Iceberg 标准的存储文件布局,其元数据通过完全兼容 Iceberg 的 catalog 进行输出,天然兼容所有支持消费 Apache Iceberg 的开源框架,如 Apache Spark 和 Trino 等。由于所有云器 Lakehouse 内表输出的数据文件都是以 Apache Parquet 格式存放在云对象存储上,元数据完全兼容 Apache Iceberg,用户真正拥有自己的数据资产,无需担心 Lock-in 的风险。
前面提到过增量计算模式依赖增量存储,这也是通过 Apache Iceberg 实现的。具体来说,基于 Snapshot Isolation 使用 Apache Iceberg V2 标准引入的 Position Delete File 来表示增量数据。由于 Position Delete File 只能表示数据的删除,我们需要把 Update 拆分成经典的 Delete+Insert 模式,这样的设计对数据有三个挑战:
围绕 Apache Parquet 锤炼极致性能
对于 Lakehouse 的引擎来说,一个 SQL 查询始于读(TableScan)终于写(TableSink)。如果说开放的表格式决定了 Lakehouse 的能力下限,那合适的文件格式则可以决定 Lakehouse 的性能上限。在大数据领域,Apache Parquet 和 Apache Orc 基本就是列存格式的实施标准。两者曾一度各占半壁江山,但现在就像 DuckDB 作者 Hannes 回答社区问题时说的,似乎 Apache Orc 已经被用得越来越少了。那在 Apache Parquet 越来越独领风骚的今天,是不是无脑选择它就能高枕无忧了?
事实并非如此,Parquet 标准其实是一个基于 Thrift 协议定义的文件格式,其中包含很多可选的字段,这为后面的问题埋下了伏笔:
尽管 Parquet 有各种各样的问题,它仍然是当前大数据文件格式的事实标准,在开放存储这个大前提下,也没有什么好纠结的。既然 Parquet 是开源的,是不是挑一个开源实现拿来用就好了?很多引擎和框架都实现了自己的 Parquet 读写模块,但由于前面提到的问题,要么功能不全,要么性能不佳,基本没有能直接拿来用。早在云器 Lakehouse 选型文件格式的时候(2022 年初),C++ 的开源 Parquet 实现只有 Apache Arrow、Apache Impala 和 DuckDB 三家,其中后两者都只实现了 V1 的功能;而 Apache Arrow 中的 Parquet C++ 代码是 Parquet 社区捐赠的,V2 的功能也实现了一部分,但仍然缺少 Predicate Pushdown、Page Index 和 Bloom Filter 等重要功能,并且内部测评的性能也不及预期,无法直接使用。
Community Over Code
纵观国外的一些友商,Velox 和>
主要贡献
云器科技对 Parquet 社区的贡献,主要涉及了 Apache 软件基金会旗下两个顶级项目 Apache Parquet 和 Apache Arrow 的三个 GitHub 仓库:
上面两张图基本涵盖了云器科技在 Parquet 社区中最主要的贡献,团队两名成员也因此被 Apache Parquet 和 Apache Arrow 社区提名为 Committer。云器科技对开源社区的投入不会停止,团队成员在 2023 年 8 月北京举行的「Apache Software Foundation 旗下大会 - Community Over Code Asia 2023」上分享了参与开源项目的心得,后续仍会深耕社区,把我们认为有价值的功能贡献回社区,让更多的用户受益。
总 结
本文回顾和分析了数据湖仓的历史和大数据平台的演进趋势,提出了基于增量计算的一体化趋势,以及该架构必然需要一个开放式的增量存储支撑。基于 Single Engine · All>
作者简介:
吴刚 ,云器科技,Lakehouse 技术专家。目前是 Apache ORC 的 PMC,也是 Apache Arrow 和 Apache Parquet 的 committer。在此之前,曾是阿里巴巴的高级技术专家,负责 MaxCompute 的存储系统,也曾在 Uber 负责 Apache Spark 平台。