什么是数据湖?用于大数据分析的大规模可扩展存储

2011 年,时任商业智能公司 Pentaho 首席技术官的 James Dixon 创造了数据湖一词。他将数据湖与当时流行的数据集市典型的信息孤岛进行了对比:
从那时起,数据湖不断发展,现在与数据仓库竞争大数据存储和分析的份额。各种工具和产品支持在数据湖中进行更快的 SQL 查询,所有三大云提供商都提供数据湖存储和分析。甚至还有新的 Data Lakehouse 概念,它将治理、安全和分析与负担得起的存储相结合。本文深入探讨了数据湖,包括它们是什么、如何使用以及如何确保您的数据湖不会变成数据沼泽。
数据湖本质上是一个单一的数据存储库,它保存您的所有数据,直到它准备好进行分析,或者可能只保存不适合您的数据仓库的数据。通常,数据湖以其本机文件格式存储数据,但数据可能会转换为另一种格式以提高分析效率。拥有数据湖的目标是从数据中提取业务或其他分析价值。
数据湖可以托管图像和视频等二进制数据、PDF 文档等非结构化数据、CSV 和 JSON 文件等半结构化数据,以及通常来自关系数据库的结构化数据。结构化数据对分析更有用,但半结构化数据可以很容易地导入到结构化形式中。通常可以使用智能自动化将非结构化数据转换为结构化数据。
问题不在于您是否需要数据湖或数据仓库;您很可能需要两者,但出于不同的目的。也可以将它们结合起来,我们将很快讨论。首先,让我们看看数据湖和数据仓库之间的主要区别:
数据集市是仅限于来自单个部门或业务单位的数据的分析数据库,与数据仓库相反,数据仓库以适合分析的形式组合了公司的所有关系数据。数据集市通过仅包含与部门相关的数据来提供有效的分析;因此,它们本质上是孤立的。一些人声称孤岛并不重要,因为业务部门不需要被排除的数据。在现实生活中,这通常很重要——总有上级需要基于来自多个业务部门的综合数据的报告。这就是为什么我们目前看到很多数据湖和数据仓库,而很少有数据集市的原因之一。
当您将原始数据存储在数据湖中时,在数据工程师或数据科学家对其进行处理之前,数据可能对业务分析师毫无用处。除了过滤和数据转换之外,数据湖还需要数据目录、数据安全和模式定义。不幸的是,没有这些功能的数据湖的简写术语是数据沼泽。
幸运的是,有很多工具可以帮助过滤和组织数据湖中的数据。例如,您可以通过创建 ORC 格式的 Hive 元存储来解决对架构的需求。设置完成后,元存储通过像 Presto 这样的大规模并行 SQL 引擎支持快速 SQL 查询。 (Optimized Row Columnar 格式是一种压缩的列式存储,针对 Hive 进行了优化,并且可以很好地与 Presto 配合使用。)
Apache Spark 是另一个大规模并行 SQL 引擎。虽然它可以与 ORC 格式一起使用,但它与另一种压缩的列式存储 Parquet 一起使用时效果更好。 Spark 可以对 Parquet 文件执行垂直和水平分区,生成只需要读取必要数据并可以跳过不相关数据的查询计划。
Databricks 是 Spark 和 MLflow 背后的公司,提供他们所谓的数据湖屋。根据 Databricks 的说法,lakehouse 结合了数据仓库和数据湖的最佳特性:
Databricks 开源的 Delta Lake 通过直接对数据湖中的数据提供可靠性和高性能构成了 Lakehouse 的基础。 Databricks Lakehouse Platform 还包括 Unity Catalog,它为数据和 AI 提供细粒度的治理。 Databricks 声称其 Data Lakehouse 提供的性价比是数据仓库的 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 Data Lake Analytics (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 时代以来,数据湖变得更加有用。 Presto 和 Apache Spark 提供比 MapReduce 快得多的 SQL 处理器,这要归功于内存中和大规模并行处理以及基于 Hive 的模式。与商用计算机的本地集群相比,基于云的数据湖更容易创建、管理和扩展。云数据湖与各种分析和人工智能工具紧密集成。

关注公众号“大模型全栈程序员”回复“小程序”获取1000个小程序打包源码。更多免费资源在http://www.gitweixin.com/?p=2627