你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
Data Lake 是一种存储库,可以按数据本来的原始格式存储大量的数据。 Data Lake Store 旨在以经济高效的方式扩展到 TB 和 PB 数据,使其适合处理大规模和多样化的数据集。 数据通常来自多个不同的源,可以包括结构化数据(如关系表)、半结构化数据(如 JSON、XML 或日志),以及非结构化数据(如图像、音频或视频)。
Data Lake 可帮助你将所有内容存储在原始的未转换状态中,延迟转换,直到需要数据。 这是一个称为“在读取时架构”的概念。 这与数据仓库形成鲜明对比,数据仓库在数据摄取时强制实施结构和应用转换,这被称为写入时架构。
常见 Data Lake 用例包括:
- 数据引入和移动:从云服务、IoT 设备、本地系统和流式处理源收集数据并将其合并到单个存储库中。
- 大数据处理:使用分布式处理框架大规模处理大容量、高速数据。
- 分析和机器学习:支持探索分析、高级分析和 AI 模型训练和微调大型、多样化的数据集。
- 商业智能和报告:通过将特选的湖数据子集集成到仓库或 BI 工具中来启用仪表板和报表。
- 数据存档和符合性:存储历史数据集或原始数据集,以满足长期保留、可审核性和法规需求。
Data Lake 的优点
- 保留原始数据以供将来使用:Data Lake 旨在以原始格式保留数据,确保将来使用的长期可用性。 在大数据环境中,此功能特别有价值,因为这些数据的潜在见解可能事先未知。 还可以根据需要存档数据,而不会丢失其原始状态。
- 自助服务探索:分析师和数据科学家可以直接查询数据,鼓励试验和发现。
- 灵活的数据支持:与需要结构化格式的仓库不同,湖泊可以本机处理结构化、半结构化和非结构化数据。
-
可缩放且高性能:在分布式体系结构中,数据湖可以实现大规模的并行引入和分布式执行,常常在大容量工作负载中胜过传统 ETL 管道。 性能优势源于:
- 并行度:分布式计算引擎(例如 Spark)对数据进行分区并同时跨多个节点执行转换,而传统的 ETL 框架通常依赖于顺序或有限的多线程执行。
- 可伸缩性:分布式系统通过弹性添加计算和存储节点进行水平缩放,而传统的 ETL 管道通常依赖于单个主机的垂直缩放,从而快速达到资源限制。
- 混合体系结构的基础:Data Lake 通常与 Lakehouse 方法中的仓库共存,将原始存储与结构化查询性能相结合。
新式 Data Lake 解决方案包括两个核心元素:
- 存储:专为持久性、容错、无限可伸缩性和各种数据类型的高吞吐量引入而构建。
- 处理:由 Azure Databricks 中的 Apache Spark、Microsoft Fabric、支持大规模转换、分析和机器学习等引擎提供支持。
此外,成熟的解决方案还包含元数据管理、安全性和治理,以确保数据质量、可发现性和合规性。
何时应使用数据湖
建议使用 Data Lake 进行探索分析、高级数据科学和机器学习工作负载。 由于数据湖保留数据的原始状态并支持读时架构,因此它们允许团队尝试多种数据类型,并揭示传统数据仓库可能无法捕获的见解。
数据湖作为数据仓库的来源
数据湖可以作为数据仓库的上游来源,其中原始数据从源系统提取并注入数据湖(提取和加载),而如 Fabric Warehouse 等现代数据仓库则使用内置的大规模并行处理(MPP)SQL 引擎来处理转换工作,将原始数据转换为结构化格式提取、加载、转换(ELT)。 这不同于传统的 ETL 管道,在加载到仓库之前,在 ETL 引擎中提取和转换数据。 这两种方法都提供灵活性,具体取决于用例,平衡数据质量、性能和资源利用率等因素,同时确保仓库针对分析进行优化。
事件流式处理和 IoT 方案
数据湖对于事件流式处理和 IoT 用例有效,在这种情况下,必须大规模保存高速数据,且没有前期架构约束。 它们可以引入和存储关系和非关系事件流,处理大量低延迟的小写入,并支持大规模并行吞吐量。 这使得它们非常适合实时监视、预测性维护和异常情况检测等应用程序。
下表比较了数据湖和数据仓库。
| 功能 | Data Lake | 数据仓库 |
|---|---|---|
| 数据类型 | 原始、非结构化、半结构化和结构化 | 结构化和高度组织 |
| 查询性能 | 速度较慢,尤其是对于复杂查询;取决于数据格式和工具 | 快速优化分析查询 |
| 延迟 | 由于即时处理而导致延迟较高 | 使用预处理结构化数据的低延迟 |
| 数据转换阶段 | 转换发生在查询时,影响整个处理时间 | 转换发生在 ETL 或 ELT 过程中 |
| 可伸缩性 | 对于大量数据,高度可缩放且经济高效 | 可缩放但更昂贵,尤其是在大规模 |
| 成本 | 降低存储成本;计算成本因使用情况而异 | 由于性能优化,存储和计算成本更高 |
| 用例匹配 | 最适合大数据、机器学习和探索分析。 在勋章架构中,金层被用于报告目的 | 非常适合商业智能、报告和结构化数据分析 |
数据湖的挑战
可伸缩性和复杂性:管理 PB 级原始、非结构化和半结构化数据需要可靠的基础结构、分布式处理和仔细的成本管理。
处理瓶颈:随着数据量和多样性的增加,转换和查询工作负载可能会带来延迟,需要仔细的管道设计和工作负荷业务流程。
数据完整性风险:如果没有强大的验证和监视,错误或不完整的引入可能会损害湖内容的可靠性。
数据质量和治理:各种源和格式使得难以实施一致的标准。 实现元数据管理、编录和治理框架至关重要。
大规模性能:随着湖的增长,查询性能和存储效率可能会降低,需要优化策略,例如分区、索引和缓存。
安全性和访问控制:确保跨各种数据集进行适当的权限和审核,以防止滥用敏感数据需要规划。
可发现性:如果没有适当的编目,湖泊可能会退化为“数据沼泽”,其中尽管存在有价值的信息,但却无法获取或被误解。
技术选择
在 Azure 上构建全面的 Data Lake 解决方案时,请考虑以下技术:
Azure Data Lake Storage 将 Azure Blob 存储与 Data Lake 功能相结合,提供与 Apache Hadoop 兼容的访问权限、分层命名空间功能和增强的安全性,从而可实现高效的大数据分析。 它旨在处理大量的结构化、半结构化和非结构化数据。
Azure Databricks 是一个基于云的数据分析和机器学习平台,它将 Apache Spark 的最佳功能与与 Microsoft Azure 生态系统的深度集成相结合。 它提供了一个协作环境,数据工程师、数据科学家和分析师可以协同工作来引入、处理、分析和建模大量数据。
Azure 数据工厂 是Microsoft Azure 的基于云的数据集成和 ETL(提取、转换、加载)服务。 可以使用它跨不同的源(无论是在云中还是本地)移动、转换和协调数据工作流。
Microsoft Fabric 是Microsoft端到端数据分析平台,将数据移动、数据科学、实时分析和商业智能统一到单个软件即服务(SaaS)体验中。
每个 Microsoft Fabric 租户都会自动预配一个称为 OneLake 的单一逻辑数据湖。 OneLake 基于 Azure Data Lake Storage (ADLS) Gen2 构建,提供一个统一的存储层,能够处理结构化和非结构化数据格式。
贡献者
本文由 Microsoft 维护, 它最初是由以下贡献者撰写的。
主要作者:
- Avijit Prasad | 云顾问
贡献者:
- 拉斐尔·赛耶格 |云解决方案架构师
要查看非公开的 LinkedIn 个人资料,请登录到 LinkedIn。
后续步骤
- 什么是 OneLake?
- Data Lake Storage 简介
- Azure Data Lake Analytics 文档
- 培训:Data Lake 存储简介
- Hadoop 和 Azure Data Lake Storage 的集成
- 连接到 Data Lake Storage 和 Blob 存储
- 使用 Azure 数据工厂将数据加载到 Data Lake 存储中