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