2011 年,时任商业智能公司 Pentaho 的首席技术官 James Dixon 创造了数据湖一词。他将数据湖与当时流行 的数据集市典型的信息孤岛进行了对比:
如果您将数据集市视为瓶装水的商店——经过清洁、包装和结构化以便于饮用——那么数据湖就是处于更自然状态的一大片水体。数据湖的内容从源头流入,填满湖,湖的各种用户可以来检查、潜入或取样。
从那时起,数据湖不断发展,现在与数据仓库争夺大数据存储和分析 的份额。各种工具和产品支持数据湖中更快的 SQL 查询,三大云提供商都提供数据湖存储和分析。甚至还有新的数据湖库概念,它将治理、安全性和分析与负担得起的存储相结合。本文深入探讨了数据湖,包括它们是什么、如何使用以及如何确保您的数据湖不会成为数据沼泽。
目录
数据湖解释
数据湖与数据仓库
数据集市呢?
数据湖上更快的 SQL 查询
数据湖库
显示更多
数据湖解释
数据湖本质上是一个单一的数据存储库,它保存您的所有数据,直到准备好进行分析,或者可能只保存不适合您的数据仓库的数据。通常,数据湖以其本机文件格式存储数据,但可以将数据转换为另一种格式以提高分析效率。拥有数据湖的目标是从数据中提取业务或其他分析价值。
数据湖可以托管二进制数据(例如图像和视频)、非结构化数据(例如 PDF 文档)和半结构化数据(例如 CSV 和 JSON 文件)以及结构化数据(通常来自关系数据库)。结构化数据对分析更有用,但半结构化数据可以很容易地导入结构化形式。非结构化数据通常可以使用智能自动化转换为结构化数据。
0 seconds of 13 minutes, 48 seconds音量 0%
数据湖与数据仓库
问题不在于您是否需要数据湖或数据仓库。您很可能两者都需要,但目的不同。正如我们将很快讨论的那样,也可以将它们组合起来。首先,让我们看一下数据湖和数据仓库之间的主要区别:
数据源:数据湖的典型数据源包括日志文件、来自点击流的数据、社交媒体帖子以及来自互联网连接设备的数据。数据仓库通常存储从事务数据库、业务线应用程序和操作数据库中提取的数据以供分析。
模式策略:数据湖的数据库模式通常在分析时应用,称为读取模式。企业数据仓库的数据库模式通常在创建数据存储之前设计,并在数据导入时应用于数据。这称为写时模式。
存储基础设施:数据仓库通常具有大量昂贵的 RAM 和 SSD 磁盘,以便快速提供查询结果。数据湖通常在商用计算机集群上使用廉价的旋转磁盘。数据仓库和数据湖都使用大规模并行处理 (MPP) 来加速 SQL 查询。
原始数据与精选数据:数据仓库中的数据应该被整理到可以将数据仓库视为组织的“单一事实来源”的程度。数据湖中的数据可能会或可能不会被管理:数据湖通常从原始数据开始,然后可以过滤和转换以进行分析。
谁使用它:数据仓库用户通常是业务分析师。数据湖用户通常是数据科学家或数据工程师,至少在最初是这样。数据经过整理后,业务分析师就可以访问数据。
分析类型:数据仓库的典型分析包括商业智能、批处理报告和可视化。对于数据湖,典型的分析包括机器学习、预测分析、数据发现和数据剖析。
数据集市呢?
数据集市是仅限于来自单个部门或业务单位的数据的分析数据库,与数据仓库相反,数据仓库将公司的所有关系数据组合成适合分析的形式。数据集市通过仅包含与部门相关的数据来提供有效的分析;因此,它们本质上是孤立的。有人声称筒仓无关紧要,因为业务部门不需要排除的数据。在现实生活中,这通常很重要——总有一个高层需要基于来自多个业务部门的组合数据的报告。这就是为什么我们目前看到许多数据湖和数据仓库,以及很少的数据集市的原因之一。
数据湖上更快的 SQL 查询
当您将原始数据存储在数据湖中时,在数据工程师或数据科学家处理数据之前,这些数据可能对业务分析师无用。除了过滤和数据转换之外,数据湖还需要数据目录、数据安全性和模式定义。对于没有这些功能的数据湖来说,不幸的简写术语是数据沼泽。
幸运的是,有很多工具可以帮助过滤和组织数据湖中的数据。例如,您可以通过创建一个 ORC 格式的 Hive 元存储来满足对模式的需求。设置完成后,元存储通过 Presto 等大规模并行 SQL 引擎支持快速 SQL 查询。(Optimized Row Columnar 格式是一种压缩的列式存储,针对 Hive 进行了优化,并且与 Presto 配合得很好。)
Apache Spark是另一个大规模并行 SQL 引擎。虽然它可以使用 ORC 格式,但它更适用于 Parquet,另一种压缩的列式存储。Spark 可以对 Parquet 文件执行垂直和水平分区,生成只需要读取必要数据并可以跳过不相关数据的查询计划。
数据湖库
Spark 和MLflow背后的公司 Databricks 提供了他们所谓的数据湖库。据 Databricks 介绍,Lakehouse 结合了数据仓库和数据湖的特性:
数据湖库将数据仓库和数据湖统一在一个简单的平台中,以处理您的所有数据、分析和 AI 用例。它建立在开放且可靠的数据基础之上,可有效处理所有数据类型,并在您的所有数据和云平台上应用一种通用的安全和治理方法。
Databricks 向开源发布的 Delta Lake 通过直接为数据湖中的数据提供可靠性和高性能,构成了 Lakehouse 的基础。Databricks Lakehouse Platform 还包括 Unity Catalog,它为数据和 AI 提供细粒度的治理。Databricks 声称其数据湖库的性价比是数据仓库的 12 倍。
本地和公共云中的数据湖
从历史上看,数据湖是使用 Apache Hadoop 商用计算机集群和 HDFS(Hadoop 分布式文件系统)在本地实施的。Hadoop 集群曾经是 Cloudera、Hortonworks 等公司的大生意。Cloudera 和 Hortonworks 在 2018 年合并,这告诉你一些关于市场方向的事情。
改变的是云,特别是超大规模公共云供应商亚马逊网络服务 (AWS)、微软 Azure 和谷歌云平台 (GCP)。所有三个云提供商都提供数据湖存储产品:Amazon Simple Storage Service (Amazon S3) 和 Amazon EMR(以前称为 Amazon Elastic MapReduce)、Azure Data Lake Store (ADLS) 和 Google Cloud Storage (GCS)。这三者还提供数据摄取、数据处理、分析和机器学习服务。创建、管理和扩展云数据湖比在数据中心管理 Hadoop 集群要容易和快捷得多;权衡是云中的长期运营支出最终将变得巨大。
数据湖的分析和机器学习
之前,我讨论了使用 Presto 和 Apache Spark 在数据湖上进行更快的 SQL 查询。SQL 只是分析数据的一种方法,尽管它非常重要并且通常是第 一步。此外,考虑 Power BI、Tableau 或 Qlik 等商业智能工具;Jupyter、Zeppelin 或 Spark 笔记本;机器学习,例如 scikit-learn、SparkML 或 KNIME;和深度学习,例如 TensorFlow 或 PyTorch。
超大规模云供应商拥有自己的分析和机器学习工具,可以连接到他们的数据湖。
Amazon Athena 使用 Presto 和 Hive 对 Amazon S3 中的数据执行 SQL 查询。Amazon EMR 是一个云大数据平台,用于使用 Apache Spark、Apache Hive 和 Presto 等开源分析框架运行大规模分布式数据处理作业、交互式 SQL 查询和机器学习应用程序。Amazon SageMaker 是一项完全托管的服务,用于构建、训练和部署机器学习模型。
Azure 数据湖分析 (ADLA) 是一种较旧的按需(无服务器)分析作业服务,可简化大数据,并使用 U-SQL,即 SQL 加 C#。ADLA 正在被 Azure Synapse Analytics 取代,后者是一种无限的分析服务,将数据集成、企业数据仓库和大数据分析结合在一起。它使您可以自由地使用无服务器或专用选项大规模地查询数据。Synapse 结合了数据湖、企业数据仓库和就地运营数据查询功能,可以自动从 ADLA 和数据仓库迁移数据和代码。Synapse 与 Azure 机器学习、Azure 认知服务和 Power BI 深度集成。
Google Cloud Storage 提供与许多强大的 Google Cloud 服务的原生集成,例如 BigQuery(数据仓库)、Dataproc(Hadoop 生态系统)、Dataflow(无服务器流式分析)、Video Intelligence API、Cloud Vision API 和 AI Platform。
总之,您可以非常灵活地选择合适的工具来分析您的数据。
结论
自 Hadoop 集群和 MapReduce 时代以来,数据湖变得更加有用。由于内存和大规模并行处理以及基于 Hive 的模式,Presto 和 Apache Spark 提供比 MapReduce 更快的 SQL 处理器。与本地商用计算机集群相比,基于云的数据湖更易于创建、管理和扩展。云数据湖与广泛的分析和人工智能工具紧密集成。