数据湖是一个集中式存储系统,用于以原始格式保存海量的结构化、半结构化和非结构化数据。与数据仓库不同,后者存储的是经过处理和建模的数据,而数据湖让我们可以先将所有数据存储起来,留待以后进行分析。这种灵活性使得数据湖成为大数据、高级分析、机器学习和实时处理场景的理想选择。
数据湖将数据保留在低成本的存储系统中,并允许不同的用户(分析师、工程师、数据科学家)使用他们自己的工具和处理框架来从中获取洞察。
数据湖的关键特性
- 存储所有类型的数据: 结构化(表)、半结构化(JSON, XML)、非结构化(图片、日志、音频)。
- 读时模式: 数据以原始形式存储;只有在读取数据时才应用模式。
- 高度可扩展: 可以使用分布式存储系统(如 Hadoop HDFS, AWS S3, Azure Data Lake Storage)扩展到 PB 级的数据。
- 低成本的存储: 旨在以低成本存储海量数据。
- 支持高级分析: 机器学习、预测建模、流式分析。
- 面向多种消费者的灵活性: BI 团队、ML 工程师、ETL 开发人员等可以以不同的方式使用同一个湖。
数据湖架构
典型的数据湖架构包含以下层级:
!<a href="https://media.geeksforgeeks.org/wp-content/uploads/20251122121639522905/datalakearchitecture.webp">datalakearchitectureDatalake Architecture
1. 摄取层
- 从各种来源收集数据 (数据库、传感器、日志、实时流、API、文件)。
- 工具:Kafka, AWS Kinesis, Flume, Sqoop。
2. 存储层: 以文件形式(CSV, Parquet, ORC, JSON, 图片等)存储原始数据,并通过以下分布式存储进行管理:
- Hadoop HDFS
- AWS S3
- Azure Data Lake Storage
- Google Cloud Storage
3. 处理层
- 转换、清理和准备数据。
- 技术:Spark, Hadoop MapReduce, Flink, Presto, Databricks。
4. 编目与元数据层
- 维护有关文件的元数据。
- 工具:AWS Glue Catalog, Apache Hive Metastore。
5. 消费层
- 分析、仪表板、ML 模型、SQL 查询。
- 工具:Power BI, Tableau, Spark SQL, Python/R 笔记本、ML 框架。
数据湖分区
- 为了保持数据有序,数据湖通常被划分为逻辑分区:
- 原始区(着陆区): 完全按接收到的样子存储未处理的数据,不对其进行任何转换。
- 清洗区: 数据经过清洗、验证和标准化。
- 精选/受信区: 准备好进行分析的、结构化且经过优化的数据。通常转换为 Parquet 等格式以实现快速读取。
- 沙盒/工作区: 供数据科学家试验数据集,而不会影响生产数据。
数据湖的挑战
- 数据质量: 由于数据湖存储的是原始且未处理的数据,因此存在数据质量差的风险。如果没有适当的管理,数据湖将被充斥不一致或不可靠的数据。
- 安全隐患: 由于它们积累了大量敏感数据,因此确保采取强有力的安全措施对于防止未经授权的访问和数据泄露至关重要。
- 元数据管理: 管理大型数据集的所有元数据可能会变得很棘手。拥有一个组织良好的元数据存储和数据目录对于轻松查找和理解数据非常重要。
- 集成复杂性: 将来自不同来源的数据整合在一起并确保一切顺畅运行可能会很困难,尤其是当数据以不同的格式和结构进入时。
- 技能要求: 实施和管理数据湖需要大数据技术方面的专业技能,这对于缺乏合适专业知识的公司来说可能是一个挑战。
数据处理框架
- Apache Spark: 一个快速的分布式处理引擎,支持内存计算。它提供 Python, Java, Scala 和 R 的 API,用于批处理分析、流处理和机器学习。
- Apache Hadoop: 一个专为海量数据集的分布式存储和处理而设计的框架。它使用 HDFS 进行存储,并提供高可扩展性和容错性。
- Apache Flink: 一个专为低延迟和高吞吐量工作负载构建的实时流处理引擎。它支持事件时间处理,也可以运行批处理作业。
- Apache Storm: 一个用于处理动态数据的实时计算系统。它是可扩展的、容错的,并且与各种数据源集成以进行连续分析。
- TensorFlow: 一个用于构建和训练深度学习模型的开源机器学习框架。常用于数据湖中的高级分析和 AI 工作负载。
相关文章:
> – [数据集市、数据湖和数据仓库的区别](https://www.geeksforgeeks.org/dbms/difference