构建数据湖

本文探讨了如何在 Google Cloud Platform (GCP) 上构建数据湖。数据湖为组织提供了极大的灵活性,能够以数据形式捕获业务运营的方方面面。随着时间的推移,这些数据可以累积到数 PB 或甚至数 EB,但随着存储和计算的分离,现在存储所有这些数据比以往更经济实惠。

捕获并存储数据后,您可以应用各种处理技术从中提取数据分析。数据仓储就是进行业务分析的标准方法。但是,对于易于理解的数据类型,例如订单、订单详细信息和库存,此方法需要相当严格的架构。仅基于传统数据仓储构建的分析会使处理不符合定义明确的架构的数据变得具有挑战性,因为这些数据经常被舍弃并永久丢失。

只有在仍然可以从所有数据中提取数据分析的情况下,从数据仓储转移到数据湖的“海量存储”方法才有用。数据科学家、工程师和分析师也常常希望使用他们选择的分析工具来处理和分析湖中的数据。此外,数据湖必须支持从多个数据源提取大量数据。

考虑到这些因素,下文为您介绍如何在 GCP 上构建数据湖。下图描绘数据湖解决方案的关键阶段。

数据湖解决方案的关键阶段

本文将更详细地探讨这些阶段,并介绍 GCP 如何为您提供帮助。

存储:将 Cloud Storage 用作数据湖

由于以下种种原因,Cloud Storage 非常适合用作中央存储库。

性能和耐用性:使用 Cloud Storage,您可以从存储一些小文件开始,将数据湖逐渐扩容至 EB 级。Cloud Storage 支持结合其他服务(如 Cloud Pub/Sub大量提取新数据以及大量使用存储的数据。虽然性能对数据湖很关键,但耐用性更为重要,而 Cloud Storage 旨在提供 99.999999999% 的年度耐用性。

高度一致性:Cloud Storage 有别于其他众多对象存储的一个关键特性是它在多种场景中支持实现高度一致性,例如写后读操作、列出存储分区和对象,以及授予对资源的访问权限。如果没有这种一致性,您必须实现复杂、耗时的解决方法,以确定数据何时可供处理。

成本效益:Cloud Storage 提供多种存储类别,价格各异,有助于满足不同的访问模式和可用性需求以及灵活地平衡数据访问的费用和频率。您可以使用一致的 API 访问不同的存储类别中的数据,而不会影响性能。例如,您可以使用生命周期政策将不常用的数据归档到 Cloud Storage Nearline 或 Cloud Storage Coldline,稍后再进行访问(例如收集训练数据以进行机器学习),延迟时间不超过一秒。

灵活的处理:Cloud Storage 原生集成了许多功能强大的 GCP 服务,例如 BigQueryCloud Dataproc(Hadoop 生态系统)、用于无服务器分析的 Cloud DataflowCloud Video IntelligenceCloud AutoML Vision 以及 AI Platform,使您能够灵活选择合适的工具来分析数据。

中央存储库:Cloud Storage 通过提供中央位置实现跨团队和部门存储和访问数据,帮助您避免必须保持同步的数据孤岛。

安全性:由于数据湖旨在存储所有类型的数据,因此企业需要强大的访问控制功能,以帮助确保其数据不会挪作他用。为此,Cloud Storage 提供了许多机制来实现对数据资源的精细访问控制。

数据提取

数据湖架构必须能够从不同来源提取不同数量的数据,例如物联网 (IoT) 传感器、网站上的点击流活动、联机事务处理 (OLTP) 数据和本地数据等。在本部分中,您将了解 GCP 如何为各种提取场景提供支持。

Cloud Pub/Sub 和 Cloud Dataflow:您可以直接提取实时数据并将其存储到 Cloud Storage 中,根据数据量进行扩缩。

Storage Transfer Service:移动大量数据很少像发出单个命令那样简单。您必须处理各种问题,例如安排定期数据转移、在来源和接收器之间同步文件,或根据过滤条件选择性地移动文件。 Storage Transfer Service 提供了一种强大的机制来完成这些任务。

gsutil:对于一次性或手动启动的转移,您可以考虑使用 gsutil,这是一款可用于 Windows、Linux 和 Mac 的开源命令行工具。它支持多线程转移、已处理的转移、并行复合上传、重试和可恢复性。

Transfer Appliance:根据您的网络带宽,如果要将大量数据迁移到云端进行分析,您可能会发现使用 Transfer Appliance 离线执行迁移所需的时间更少。

如需了解详情,请参阅更详细的提取方案概览以及有关选择提取方案的决策制定关键标准。

处理和分析

提取和存储数据后,下一步是使其可用于分析。在某些情况下,您可以在提取数据后立即将其存储在易于理解的架构中,这样可以简化就地查询。例如,如果您将传入数据以 Avro 格式存储在 Cloud Storage 中,则可以执行以下操作:

  • 在 Cloud Dataproc 上使用 Hive 对数据发出 SQL 查询。
  • 针对 BigQuery 中的数据直接发出查询
  • 将数据加载到 BigQuery 中,然后进行查询。

但是,在提取和存储数据时,您无法始终将数据调整为众所周知的架构。事实上,维护数据湖而不是数据仓库的主要原因在于前者可以立即存储所有内容,以便之后提取数据分析。根据原始数据的性质和所涉及的分析类型,工作流可以很简单,也可以很复杂。下图提供了简要概览。

数据湖工作流简要概览

数据挖掘和探索

由于存储在数据湖中的大部分数据尚未准备好立即使用,因此您必须先挖掘此数据以获取潜在价值。Jupyter Notebook 是用于探索原始数据的最佳工具,为此,GCP 为 Cloud Datalab 提供了一个全托管式 Jupyter Notebook 服务。

Cloud Datalab 预装了各种热门数据科学库,如 TensorFlow 和 NumPy。除了使用 Cloud Datalab 之外,您还可以访问 Cloud Dataproc 中的传统 Hadoop 工具生态系统以及使用 Cloud Dataflow 进行完全无服务器分析。对于强大的基于 SQL 的分析,它们可以通过 Cloud Dataprep by Trifacta 转换原始数据并将其加载到 BigQuery 中。

在了解数据湖中原始数据子集的分析潜力后,您可以将该子集提供给更广泛的受众群体。

设计和部署工作流

使数据子集的可用范围更广意味着需要创建焦点数据集市,如上图所示。您可以使用经过编排的数据流水线使这些数据集市始终保持在最新状态,具体来说,这些数据流水线获取原始数据并将其转换为下游进程和用户可以使用的格式。此外,这些流水线因数据的性质和使用的分析类型而异。以下是一些常见的分析工作流以及在 GCP 上实现它们的方法。

转换原始数据并加载到 BigQuery 中

在下图所示的简单但常见的工作流中,您使用提取、转换和加载 (ETL) 流程将数据提取到 BigQuery 数据仓库中。然后,您可以使用 SQL 查询数据。Cloud Dataprep 是一种用于清理和准备数据的可视化工具,非常适合简单的 ETL 作业,而 Cloud Dataflow 和 Apache Beam 可为更多 ETL 作业提供额外的灵活性。

将数据加载到 BigQuery 的工作流

批量分析

如果要将 Hadoop 产品生态系统用于批量分析,请将转换后的数据存储在单独的 Cloud Storage 位置。然后,您可以使用 Cloud Dataproc 通过 Spark、Spark SQL、SQL on Hive 和类似工具针对此数据运行查询。Apache Avro、Apache Parquet 和 Apache ORC 是这种经过完善的数据的常见格式。下图总结了此工作流。

使用 Hadoop 产品进行批量分析

实时分析

如果您想要一个简单明确、基于 SQL 的流水线,BigQuery 上的流处理可支持您在提取数据时对其进行查询。添加带有 Beam 的 Cloud Pub/Sub 和 Cloud Dataflow 可提供更深入的流处理功能,例如,您的用户可以在 BigQuery 中存储数据之前实现聚合、数据选取和过滤。对于时间序列分析,您可以将提取的数据存储在 Cloud Bigtable 中,以便快速分析。下图演示了此工作流。

将数据存储在 Cloud Bigtable 中以进行实时分析

机器学习

机器学习可以从数据湖的大量数据中受益。在确定有用的训练数据、相关的数据准备步骤以及机器学习网络架构后,您可以编排这些步骤,如下图所示。借助 AI Platform 可以轻松训练模型,然后使用它们进行批量预测和在线预测。

编排机器学习数据

并非所有机器学习使用场景都保证可以设计和训练自定义模型。为此,GCP 提供了用于语音、视觉、视频智能和自然语言处理的预训练模型。在这些场景中,您将适当的输入(如音频、图片或视频)传入相应的 GCP 服务。然后,您可以提取有价值的元数据并将该元数据存储在 BigQuery 等服务中,以便进一步查询和分析。下图演示了此流程。

使用预训练的机器学习模型

后续步骤

此页内容是否有用?请给出您的反馈和评价:

发送以下问题的反馈:

此网页