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

148 阅读9分钟

2011年,时任商业智能公司Pentaho首席技术官的James Dixon创造了数据湖这个词。他描述的数据湖当时流行的数据集市的典型信息孤岛形成对比

如果你把数据集市看作是瓶装水的存储--经过清洗、包装和结构化以方便消费,那么数据湖就是一个处于更自然状态的大型水体。数据湖的内容从一个源头流入,填满了整个湖泊,而湖泊的各种用户可以来检查、潜入或取样。

从那时起,数据湖已经发展起来,现在与数据仓库竞争大数据存储和分析的份额。各种工具和产品支持在数据湖中进行更快的SQL查询,所有三个主要的云供应商都提供数据湖存储和分析。甚至还有新的数据湖馆概念,它将治理、安全和分析与负担得起的存储相结合。这篇文章是对数据湖的高度深入研究,包括它们是什么,如何使用,以及如何确保你的数据湖不会变成数据沼泽。

数据湖的解释

数据湖本质上是一个单一的数据存储库,它持有你的所有数据,直到它准备好进行分析,或者可能只有那些不适合你的数据仓库的数据。通常情况下,数据湖以其原始文件格式存储数据,但数据可能被转换为另一种格式,以使分析更有效率。拥有一个数据湖的目的是为了从数据中提取业务或其他分析价值。

数据湖可以承载二进制数据,如图像和视频,非结构化数据,如PDF文件,和半结构化数据,如CSV和JSON文件,以及结构化数据,通常来自关系型数据库。结构化数据对分析更有用,但半结构化数据很容易被导入到结构化形式中。非结构化数据通常可以使用智能自动化转换为结构化数据。

数据湖与数据仓库

问题不在于你是否需要一个数据湖或数据仓库;你很可能两者都需要,但目的不同。也有可能将它们结合起来,我们很快就会讨论。首先,让我们看看数据湖和数据仓库的主要区别。

  • 数据源。数据湖的典型数据来源包括日志文件、来自点击流的数据、社交媒体帖子和来自互联网连接设备的数据。数据仓库通常存储从交易型数据库、业务线应用程序和操作型数据库中提取的数据,用于分析。
  • 模式战略。数据湖的数据库模式通常在分析时应用,这被称为 "读模式"。企业数据仓库的数据库模式通常是在创建数据存储之前设计的,并在数据导入时应用于数据。这就是所谓的 "写模式"
  • 存储基础设施。数据仓库通常有大量昂贵的RAM和SSD磁盘,以便快速提供查询结果。数据湖经常在商品计算机集群上使用廉价的旋转磁盘。数据仓库和数据湖都使用大规模并行处理(MPP)来加快SQL查询的速度。
  • 原始数据与精心策划的数据。数据仓库中的数据应该是经过整理的,以至于数据仓库可以被视为一个组织的 "单一真相来源"。数据湖中的数据可能是,也可能不是:数据湖通常从原始数据开始,随后可以进行过滤和转换以进行分析。
  • 谁在使用它。数据仓库用户通常是业务分析师。数据湖的用户通常是数据科学家或数据工程师,至少在最初。一旦数据被整理好,商业分析师就可以访问这些数据了。
  • 分析的类型。数据仓库的典型分析包括商业智能、批量报告和可视化。对于数据湖,典型的分析包括机器学习、预测性分析、数据发现和数据分析。

那么数据集市呢?

数据集市是分析数据库,仅限于来自单一部门或业务单位的数据,与数据仓库相反,数据仓库将公司的所有关系型数据合并为适合分析的形式。数据集市通过只包含与该部门相关的数据来提供有效的分析;因此,它们本质上是孤立的。有些人声称,孤岛化并不重要,因为业务部门不需要被排除的数据。在现实生活中,这往往是重要的--总有一个上级需要基于多个业务部门的综合数据的报告。这就是为什么我们目前看到许多数据湖和数据仓库,而很少看到数据集市的原因之一。

在数据湖上进行更快的SQL查询

当你在数据湖中存储原始数据时,在数据工程师或数据科学家对其进行处理之前,这些数据对业务分析师来说可能是无用的。除了过滤和数据转换之外,数据湖还需要数据目录、数据安全和模式定义。对于没有这些功能的数据湖,一个不幸的速记术语是数据沼泽

幸运的是,有很多工具可以帮助过滤和组织你的数据湖中的数据。作为一个例子,你可以通过创建一个ORC格式的Hive元存储来解决对模式的需求。一旦建立起来,元存储就可以通过Presto这样的大规模并行SQL引擎支持快速SQL查询。(优化的行列格式是一种压缩的列式存储,为Hive进行了优化,并能与Presto很好地配合。)

Apache Spark是另一个大规模的并行SQL引擎。虽然它可以与ORC格式一起工作,但它与另一种压缩列式存储Parquet的工作效果更好。Spark可以对Parquet文件进行垂直和水平分区,产生一个查询计划,只需要读取必要的数据,并可以跳过不相关的数据。

数据湖馆

Databricks,Spark和MLflow背后的公司,提供了他们所谓的数据湖库。根据Databricks的说法,湖心岛结合了数据仓库和数据湖的最佳特征。

数据湖库将数据仓库和数据湖的优点统一在一个简单的平台上,以处理你所有的数据、分析和人工智能用例。它建立在一个开放和可靠的数据基础上,可以有效地处理所有的数据类型,并在你所有的数据和云平台上应用一个共同的安全和治理方法。

Databricks开源的Delta Lake,通过直接在数据湖中的数据上提供可靠性和高性能,构成了湖心岛的基础。Databricks Lakehouse平台还包括Unity Catalog,它为数据和人工智能提供了细粒度的治理。Databricks声称,其数据湖库的性价比是数据仓库的12倍。

内部和公共云中的数据湖

历史上,数据湖是在企业内部使用Apache Hadoop集群的商品计算机和HDFS(Hadoop分布式文件系统)实现的。Hadoop集群曾经是Cloudera、Hortonworks等的大生意。Cloudera和Hortonworks在2018年合并了,这说明了市场的方向。

改变的是云,特别是超大规模的公共云供应商亚马逊网络服务(AWS)、微软Azure和谷歌云平台(GCP)。这三个云供应商都提供数据湖存储产品。亚马逊简单存储服务(Amazon S3)和亚马逊EMR(以前的亚马逊Elastic MapReduce),Azure数据湖存储(ADLS),以及谷歌云存储(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查询。亚马逊EMR是一个云大数据平台,用于运行大规模的分布式数据处理工作、交互式SQL查询和机器学习应用,使用开源分析框架,如Apache Spark、Apache Hive和Presto。亚马逊SageMaker是一个完全管理的服务,用于构建、训练和部署机器学习模型。

Azure Data Lake Analytics(ADLA)是一个较早的按需(无服务器)分析工作服务,它简化了大数据,并使用U-SQL,即SQL加C#。ADLA正在被Azure Synapse Analytics取代,后者是一个无限制的分析服务,将数据整合、企业数据仓库和大数据分析结合起来。它让你可以根据自己的条件自由地查询数据,使用无服务器或专用选项--在规模上。Synapse结合了数据湖、企业数据仓库和就地操作数据查询功能,并能自动从ADLA以及数据仓库中迁移数据和代码。Synapse与Azure机器学习、Azure认知服务和Power BI深度整合。

谷歌云存储提供与一些强大的谷歌云服务的原生集成,如BigQuery(数据仓库)、Dataproc(Hadoop生态系统)、Dataflow(无服务器流分析)、Video Intelligence API、Cloud Vision API和AI平台。

总的来说,你有相当大的灵活性来选择合适的工具来分析你的数据。

结论

自Hadoop集群和MapReduce时代以来,数据湖已经变得更加有用。由于内存和大规模并行处理以及基于Hive的模式,Presto和Apache Spark提供的SQL处理器比MapReduce快得多。基于云的数据湖在创建、管理和扩展方面比内部商品计算机集群要容易得多、快得多。而且,云数据湖与各种分析和人工智能工具紧密结合。