数据湖仓详解
作者:Charles Mahler / 开发者
2023年12月01日
导航至
大数据格局始终在变化,以解决现有问题,并不断突破性能和规模的界限。数据湖仓是一种新的架构模式,通过解决先前解决方案(如数据仓库和数据湖)中出现的各种问题,迅速获得普及。在本文中,您将了解以下内容:
- 什么是数据湖仓
- 数据湖仓的关键特性
- 数据湖仓的优势
- 数据湖仓架构组件概述
什么是数据湖仓?
数据湖仓是一种数据存储架构,它结合了数据湖的可扩展性和多样化数据存储能力,以及数据仓库的性能和结构。
数据湖仓允许组织以原始形式存储结构化、半结构化和非结构化数据,同时还在单个平台上为数据治理、安全性以及查询优化等提供工具。数据湖仓提供了两全其美的优势,而无需维护单独的系统。
数据湖仓的关键特性
数据湖仓解决了仅靠数据湖或数据仓库无法解决的若干问题。让我们来看看数据湖仓的一些最有价值的特性。
近乎无限的扩展性
理论上,通过构建在分布式对象存储解决方案之上,可用硬件是限制数据湖仓存储的唯一因素。从实际角度来看,这意味着您可以根据需要存储尽可能多的数据,而不必担心存储成本以外的任何技术问题。
计算与存储分离
数据湖仓通常将存储和计算过程分离,从而允许两者独立扩展。这意味着您可以根据需要存储尽可能多的数据,而无需担心计算资源,并根据需要扩展计算能力,而无需为额外的存储付费。
ACID 事务支持
执行 ACID 事务的能力是将数据湖仓与数据湖区分开来的关键特性之一。当多个用户同时读取和写入数据时,围绕一致性和持久性进行保证,让您的开发人员和分析师的工作更加轻松。
数据治理与管理
数据湖仓提供了许多用于管理数据的功能,包括快照和时间旅行,以查看存储对象的历史记录和回滚更改的能力。对于数据治理和安全性,可以使用细粒度的访问控制和审计。
使用数据湖仓的优势
实时分析能力
数据湖仓可以支持传统数据湖和数据仓库难以处理的实时分析用例。这归功于几个因素。数据湖仓智能地将数据从较慢的对象存储移动到基于 RAM 的查询,从而实现更快的查询响应。其次,它们支持 Spark 和 Presto 等高级查询引擎,这些引擎执行分布式和向量化处理以优化查询。最后,数据湖仓支持流式数据摄取,从而减少了分析陈旧数据的情况。
降低成本
数据湖仓的另一个优势是,它们可以通过简化和优化组织的数据管理实践来降低成本。数据湖仓节省资金的一种方式是消除跨不同系统的多个数据副本的需求。
在传统设置中,数据通常驻留在孤岛中,在数据湖中重复用于原始存储,在数据仓库中重复用于结构化分析。这种重复增加了存储成本,并使数据治理和一致性复杂化。通过将数据整合到单个统一的架构中,数据湖仓减少了对冗余数据副本的需求。
数据湖仓还通过减少带宽使用来降低成本。由于不同系统之间流动的数据较少,并且具有优化的查询性能,因此减少了查询所需的处理能力。
简化的架构和统一的数据管理
数据湖仓的另一个优势是它们如何通过创建统一的架构来简化业务的数据基础设施。不再需要维护由复杂的数据处理管道连接的几个不同系统,而是使用一个原始数据和处理数据可以共存的单一平台来简化不必要的复杂性。
数据湖仓架构概述
在本节中,您将了解构成数据湖仓架构的组件(分层)。稍后,我们将了解一些可用于构建这些架构组件的工具。
摄取层
第一个架构层是如何从不同来源收集数据并传输到数据湖仓中的存储。这涉及数据转换和存储前验证等过程。大多数数据湖仓都支持流式数据摄取,以实现实时分析。
存储层
存储层是使用持久性文件格式(如 Parquet 或 ORC)存储正在摄取的不同类型数据的位置。
元数据层
这一层是将数据湖仓与数据湖和数据仓库区分开来的地方。元数据层是数据湖仓中存储的每个对象的统一信息记录。此元数据支持 ACID 事务、索引和缓存以加快查询速度、数据治理、审计和定义的架构。
数据消费层
最后一层使数据可供最终用户消费。这可能涉及与数据可视化和分析工具的集成,供非技术用户通过 API 使用。更高级的用户(如机器学习工程师)可以直接访问底层的 Parquet 文件。
数据湖仓的挑战
数据湖仓并非完美,并且确实存在一些潜在的挑战。以下是您可能遇到的一些最常见的问题:
- 实施复杂性 - 创建数据湖仓需要组织内部可能不具备的技术专业知识。将数据湖仓与现有系统集成可能是另一个实施问题。
- 数据治理与安全 - 虽然数据湖仓比数据湖提供更好的治理,但设置和维护适当的治理、合规性和数据质量流程可能令人生畏,尤其是在数据量庞大的情况下。
- 供应商锁定 - 虽然大多数数据湖都侧重于开源存储格式,但如果您选择提供专有功能和集成的云服务,仍然可能存在被锁定到平台中的风险。
- 可变的查询性能 - 数据湖仓对于不同类型的查询,性能可能会有所不同。处理大量并发查询也可能是一个问题,特别是当少数复杂查询减慢其他简单查询的速度时。
数据湖仓工具
有几种选项可以开始使用数据湖仓。这包括选择预构建的服务或使用开源工具构建自己的服务。在本节中,我们将了解主要工具类别以及这些类别中的一些常用工具。
- 数据摄取 - 数据摄取工具需要能够高效地处理大量传入数据,并使其易于与不同的数据源集成。例如 Telegraf 和 Apache Kafka。
- 数据存储 - 用于构建数据湖仓的可用工具包括对象存储工具,如 AWS S3、MinIO 和 Google Cloud Storage。
- 数据处理 - 数据湖仓常用的数据处理工具包括 Apache Spark 和 Apache Flink。这些工具允许您根据工作负载的需要转换和操作数据。
- 数据管理 - 数据管理工具扩展了底层存储层,以提供您期望从数据湖仓获得的功能。例如 Delta Lake 和 Apache Hudi。
未来数据湖仓趋势
数据湖仓架构仍然相对较新,因此发展迅速。以下是您在未来应关注的数据湖仓在特性和功能方面的一些未来趋势:
- MLOps 工作负载的应用 - 数据湖仓非常适合数据科学团队采用 MLOps 最佳实践,且开销极小。数据湖仓支持 MLOps 所需的大部分功能,而无需专用解决方案,这使得机器学习专家可以更轻松地工作。
- 自动化性能优化 - 许多数据湖仓将自动优化查询并根据工作负载模式调整性能,而不是手动调整索引和存储模式等内容以提高查询性能。
- 改进的语义层 - 数据湖仓的一个挑战是使大量数据可供非技术用户访问和理解。数据湖仓语义层的改进,加上 LLM 等工具,将允许用户使用自然语言查询和分析其数据。
数据湖仓常见问题解答
数据湖仓如何工作?
数据湖仓的工作方式首先是从各种来源摄取数据。这包括传统数据库、来自 IoT 设备的实时流数据、应用程序日志等。湖仓通过各种机制(例如批量上传或流式传输管道,具体取决于数据的来源和性质)摄取此数据,无论是结构化、半结构化还是非结构化数据。
进入湖仓后,原始数据以其原生格式存储,通常在分布式文件系统或对象存储(如 AWS S3 或 MinIO)中。元数据管理工具对数据进行编目并维护其沿袭,从而实现高效的发现和访问。数据湖仓通常采用读取时架构方法,其中数据仅在查询或分析时才进行结构化和转换。
数据湖仓与数据湖有何不同?
数据湖和数据湖仓之间的主要区别在于数据仓库中看到的对结构化数据和性能优化的支持。数据湖仓仍然存储原始和未格式化的数据,但在其之上添加了元数据层和治理模型,以确保更好的数据质量,从而实现更好的性能。
数据湖仓与数据仓库的对比
数据湖仓和数据仓库之间的主要区别在于数据湖仓存储非结构化和半结构化数据的能力。存储在数据仓库中的数据通常需要 ETL 流程才能在存储之前处理数据,以确保数据格式正确。