摘要:去年底的2024 AWS re:Invent大会,新任CEO Matt Garman发布了一众与AI相关的新服务。在这些新服务中,新的Amazon S3 Tables服务看似不起眼,却对于未来数据存储有着深远影响。
去年底的2024 AWS re:Invent大会,新任CEO Matt Garman发布了一众与AI相关的新服务。在这些新服务中,新的Amazon S3 Tables服务看似不起眼,却对于未来数据存储有着深远影响。
在当时的发布现场,笔者与多位技术专家进行交流,均认为Amazon S3 Tables的发布是以Apache Iceberg为代表的开放表格发展历程的重要时刻,不仅仅标志着AI时代下基于对象存的开放表格在湖仓一体的霸主地位,更意味着对象存储作为主存储的时代正加速到来。
那么,开放表格目前市场情况如何?三大开放表格彼此之间的竞争情况如何?为什么开放表格格式是对象存储的理想选择?开放表格的流行为什么会像当初Hadoop的崛起一样,在未来的AI世界中占据数据分析的霸主地位?
近日,数据库和数据湖技术专家Brenna Buuck对此进行了深度分析。对此,大数据在线进行编译与解读。
现代化的湖仓一体架构建立在三个关键组件之上:存储层、开放表格式式和计算引擎。
这其中,开放表格格式(Open Table Formats)和对象存储(Object Storage)正在重新定义构建数据系统的方式,成为可扩展、高效且面向未来的现代化湖仓一体架构的基石。
现代化湖仓一体架构采用模块化设计,且充分利用对象存储的可扩展性、灵活性和成本效益等优势,以及开放表格的高级元数据管理功能和跨不同计算引擎的互操作性,帮助企业与组织满足现代工作负载的需求。
在存储层,现代化湖仓一体架构通常采用对象存储作,以方便存储结构化、半结构化和非结构化数据。而开放表格则充当元数据抽象层,提供类似数据库的功能,包括 Schema、分区和版本控制,以及 ACID 事务、Schema 演变和时间旅行等高级功能。最后,Spark、Presto、Trino 和 Dremio 等计算引擎与开放表格式交互,以大规模处理和分析数据,使用户能够灵活地选择最适合其工作负载的工具。
现代化湖仓一体架构的核心设计思路是算和存储的分解,充分利用对象存储、开放表格和各种计算引擎进行交互,既满足大规模处理和分析数据的需求,又具备足够的灵活性和扩展性,不会受制于供应商。
在AI应用蓬勃发展和高级分析需求日渐增多的大趋势下,打造现代的湖仓一体架构依然成为企业与组织在数字化转型中的必选项。
企业的数据架构最早要追溯到在线事务处理 (OTLP) 数据库等早期系统。由于OLTP数据并不具备分析功能,所以在线分析处理 (OLAP) 系统随后开始出现,针对查询结构化数据进行优化,但无法有效处理半结构化和非结构化数据。
随着互联网、移动互联网的快速发展,半结构化、非结构化数据成为数据增长的主力军,如何在数据分析中纳入半结构化、非结构化数据就成为很多企业与组织的必须,这推动了数据湖的出现,数据湖为各种数据类型提供可扩展的存储和 Schema-on-Read 功能,但数据湖也缺乏事务保证。
最终,数据湖与数据仓库开始走向融合,推动了湖仓一体的数据架构发展,将数据湖和数据仓库的优势集中到统一架构之中。Lakehouse 基于开放表格式和对象存储构建,并且完全解耦,这意味着它们由模块化组件构成。这种分解式架构既提供了数据库的事务一致性,又提供了对象存储的可扩展性。
如果想详细了解数据仓库、数据湖、湖仓一体的区别与特点,可以参考大数据在线之前发布的技术稿件《大数据“打假”:什么才是真湖仓一体?》,技术专家张友东详细解读了数据仓库、数据湖和湖仓一体的演进过程。
湖仓一体的数据架构架构经过专门设计,旨在利用对象存储系统的可扩展性和成本效益,例如 Amazon Web Services (AWS) S3、Google Cloud Storage 和 Azure Blob Storage。这种集成支持在一个统一的平台中无缝管理各种数据类型(结构化、半结构化和非结构化)。
对象存储上的数据湖仓一体架构的主要功能包括:
统一存储层:通过利用对象存储,数据湖仓一体可以以其原生格式存储大量数据,无需在存储前进行复杂的数据转换。这种方法简化了数据摄取,并实现了与各种数据源的兼容性。可扩展性:对象存储系统本质上具有可扩展性,使数据湖仓一体能够容纳不断增长的数据量,而无需对基础设施进行重大更改。这种可扩展性使组织能够有效地管理不断扩大的数据集和不断变化的分析要求。灵活性:一流的对象存储可以部署在任何地方 - 本地、私有云、公共云、主机托管设施、数据中心和边缘。这种灵活性使组织能够根据特定的运营和地理需求定制其数据基础设施。通过集成这些元素,数据湖仓一体架构提供了一个全面的解决方案,结合了数据湖和数据仓库的优势。这种设计有助于高效的数据存储、管理和分析,所有这些都建立在可扩展且灵活的对象存储系统的基础上。
开放表格格式(Open Table Formats)是一种标准化的开源框架,旨在高效管理大规模分析数据集。它作为数据文件之上的元数据层运行,促进跨各种处理引擎的无缝数据管理和访问。在目前的市场中,主要有以下三种开放表格式(Iceberg、Delta Lake 和 Hudi):
Apache Iceberg
Apache Iceberg 是一种高性能表格格式,专为海量数据集而设计。其架构优先考虑高效的读取操作和可扩展性,使其成为现代分析工作负载的基石。其定义功能之一是将元数据与数据分离,从而允许基于快照的高效隔离和规划。这种设计消除了成本高昂的元数据操作,支持跨大型数据集的并行查询规划。
Iceberg 生态系统的最新进展凸显了它在整个行业的日益普及。S3 表使查询引擎能够直接访问存储在 S3 兼容系统中的表元数据和数据文件,从而减少延迟并提高互操作性,从而简化数据管理。与此同时,Databricks 对 Tabular 的收购凸显了 Iceberg 在开放式湖仓一体平台中的首要作用,并强调了其对性能和治理的关注。
此外,Snowflake 将 Polaris 开源的决定表明了该行业对开放性和互操作性的承诺,进一步巩固了 Iceberg 作为领先表格格式的地位。
目前Apache Iceberg的主要支持者包括Snowflake、Databricks、Cloudera、Google Cloud、AWS、阿里云、微软等。
Delta Lake
Delta Lake 最初由 Databricks 开发,与 Apache Spark 密切相关。它与 Spark API 完全兼容,并与 Spark 的结构化流式处理集成,允许批处理和流式处理操作。
Delta Lake 的一个关键功能是它使用事务日志来记录对数据所做的所有更改,从而确保一致的视图和写入隔离。此设计支持并发数据操作,使其适用于高吞吐量环境。
目前Delta Lake主要支持者包括Databricks、微软、SAP等。
Apache Hudi
Apache Hudi 旨在应对实时数据摄取和分析的挑战,尤其是在需要频繁更新的环境中。其架构支持用于高效数据摄取的写入优化存储 (WOS) 和用于查询的读取优化存储 (ROS),从而实现数据集的最新视图。
通过逐步处理数据流中的更改,Hudi 促进了大规模实时分析。筛选条件和全局索引等功能可优化 I/O 操作,从而提高查询和写入性能。此外,Hudi 还包括用于集群、压缩和清理的工具,这些工具有助于维护表的组织和性能。它处理记录级更新和删除的能力使其成为高速数据流和需要合规性和严格数据管理的场景的实用选择。
目前Apache Hudi主要支持者包括:腾讯云、阿里云、华为云等。
Apache Iceberg、Delta Lake 和 Apache Hudi 都为数据湖仓一体架构带来了独特的优势。以下是基于主要特征的这些格式的比较概述:
ACID 事务:所有三种格式都符合 ACID 要求,确保可靠的数据操作。Iceberg 采用快照隔离来实现事务完整性,Delta Lake 利用事务日志实现一致的视图和写入隔离,Hudi 为高并发场景提供文件级并发控制。架构演变:每种格式都支持架构更改,允许添加、删除或修改列。Iceberg 提供灵活的架构演变,而无需重写现有数据,Delta Lake 在运行时强制执行架构以保持数据质量,而 Hudi 提供预提交转换以提高灵活性。分区演变:Iceberg 支持分区演变,无需重写现有数据即可无缝更新分区方案。Delta Lake 允许分区更改,但可能需要手动干预才能获得最佳性能,而 Hudi 提供精细集群作为传统分区的替代方案。时间旅行:这三种格式都提供时间旅行功能,允许用户查询历史数据状态。此功能对于审计和调试目的非常有用。广泛采用:Iceberg 是数据社区最广泛采用的开放表格式。从 Databricks 到 Snowflake 再到 AWS,许多大型平台都投资了 Iceberg。如果您已经是这些生态系统的一部分或正在考虑加入它们,那么 Iceberg 可能会自然而然地脱颖而出。索引:Hudi 提供多模式索引功能,包括 Bloom 过滤器和记录级索引,可以提高查询性能。Delta Lake 和 Iceberg 依赖于元数据优化,但不提供相同级别的索引灵活性。并发和流式处理:Hudi 专为实时分析而设计,具有高级并发控制和内置工具(如 DeltaStreamer)用于增量摄取。Delta Lake 支持通过更改数据源进行流式处理,而 Iceberg 提供基本的增量读取功能。这些区别突出表明,虽然这三种格式都为现代数据架构提供了强大的基础,但最佳选择取决于特定的工作负载要求和组织需求。
在数据湖仓一体架构中实现最佳性能对于充分利用开放表格式的功能至关重要。这种性能取决于存储层和计算层的效率。
存储层必须提供低延迟和高吞吐量,以满足大规模分析需求。对象存储解决方案应有助于快速访问数据并支持高速传输,即使在高工作负载下也能确保平稳运行。此外,高效的IOPS对于处理大量并发数据请求至关重要,可实现无瓶颈的响应式数据交互。
计算层性能同样重要,它直接影响数据处理和查询执行速度。计算引擎必须可扩展,才能在不影响性能的情况下管理不断增长的数据量和用户查询。采用优化的查询执行计划和资源管理策略可以进一步提高处理效率。此外,计算引擎需要与开放表格式无缝集成,以充分利用 ACID 事务、架构演变和时间旅行等高级功能。
开放式表格式还包含旨在提高性能的功能。这些也需要正确配置并用于完全优化的堆栈。其中一项功能是高效的元数据处理,其中元数据与数据分开管理,从而可以更快地进行查询规划和执行。数据分区将数据组织成子集,通过减少操作期间扫描的数据量来提高查询性能。对架构演变的支持使表格式能够适应数据结构的变化,而无需进行大量的数据重写,从而确保灵活性,同时最大限度地减少处理开销。
通过关注存储和计算层的这些性能方面,组织可以确保其数据湖仓一体环境高效、可扩展,并且能够满足现代分析和 AI 工作负载的需求。这些考虑因素使开放式表格格式能够充分发挥其潜力,提供实时洞察和决策所需的高性能。
数据湖仓一体架构基于开放表格式构建,可提供统一的数据管理方法。但是,实现真正的开放性需要的不仅仅是采用开放的表格格式。开放数据湖仓一体必须集成模块化、可互操作的开源组件,例如存储引擎、目录和计算引擎,以实现跨不同平台的无缝运行。
开放表格式是开放标准,并且根据其设计,支持整个堆栈的互操作性和开放性。然而,实际挑战仍然存在,例如确保目录互操作性和避免依赖专有服务进行表管理。最近推出的 Apache XTable 等工具展示了通用兼容性的进展,为一次编写、随处查询的系统提供了一条途径。需要注意的是,XTable 不允许你以多种开放的表格格式写入,只允许读取。希望未来互操作性的创新将继续建立在这些项目和其他围绕开放表格格式的项目之上。
开放表格的未来随着数据湖仓一体的不断发展,一些新的趋势开始显现。
一个重要的发展趋势就是将 AI 和机器学习 (ML) 工作负载直接集成到湖仓一体架构中。对于存储层,这可能看起来像是与 Hugging Face 和 OpenAI 等关键 AI 平台直接集成的平台。对于计算层,AI 集成可能会导致创建针对 ML 算法优化的专用计算引擎,从而提高湖仓一体生态系统中训练和推理过程的效率。
另一个重要的发展领域回是开源社区。当 Databricks、Snowflake 和 AWS 等大型公司开始大展拳脚时,人们很容易忘记开放表格格式是真正的开放标准。Iceberg、Hudi 和 Delta Lake 可供任何贡献者、协作或集成到开源工具和平台中。换句话说,它们是充满活力且不断发展的开放标准数据生态系统的一部分,开源应用程序、附加组件、目录和创新等会持续激增。
最后,随着企业与组织为 AI 和其他高级分析应用构建大规模、高性能的数据湖仓一体,开放表格式的采用率将继续上升。一些行业专业人士已经将开放表的流行等同于十多年前Hadoop 的崛起,开放表格未来有望实现大数据的霸主地位。随着Hadoop逐渐走向没落,开放表格的崛起,正所谓是大数据已死、亦将永存。
来源:大数据在线