分析您的数据

Last reviewed 2023-08-08 UTC

Google Cloud 架构框架中的文档介绍了在 Google Cloud 中进行数据分析的一些核心原则和最佳实践。您将了解一些关键数据分析服务,以及它们在数据生命周期的各个阶段如何提供帮助。这些最佳实践可帮助您满足数据分析需求并创建系统设计。

核心原则

企业想要分析数据并基于这些数据生成富有实用价值的分析洞见。Google Cloud 为您提供了各种服务,可帮助您完成从数据注入到报告和可视化的整个数据生命周期。其中的大多数服务都是全代管式服务,有些是无服务器服务。您还可以在 Compute Engine 虚拟机上构建和管理数据分析环境,例如,用来自行托管 Apache HadoopBeam

您的具体侧重点、团队专业知识和战略观可帮助您确定采用哪些 Google Cloud 服务来支持您的数据分析需求。例如,您可以借助 Dataflow 以无服务器方式编写复杂的转换,但您必须依靠独特的配置版本才能满足计算和处理需求。此外,您也可以借助 Dataproc 运行相同的转换,但您可以自行管理集群并微调作业。

在系统设计中,请考虑您的团队使用哪种处理策略,例如提取、转换和加载 (ETL)提取、加载和转换 (ELT)。系统设计也应考虑您需要处理的是批量分析还是流式分析。Google Cloud 提供了一个统一的数据平台,可让您构建数据湖数据仓库来满足您的业务需求。

密钥服务

下表简要介绍了各项 Google Cloud 分析服务:

Google Cloud 服务 说明
Pub/Sub 简单、可靠、可扩缩,可以用作数据流分析和事件驱动型计算系统的基础。
Dataflow 一项全代管式服务,可用于转换采用流式(实时)模式和批量(历史)模式的数据并丰富数据内容。
Dataprep by Trifacta 智能数据服务,可用于直观地探索、清理和准备结构化数据及非结构化数据,以备分析之用。
Dataproc 快速、易用、全代管式云服务,用于运行 Apache Spark 和 Apache Hadoop 集群。
Cloud Data Fusion 全代管式数据集成服务,专为云打造且可让您构建和管理 ETL/ELT 数据流水线。Cloud Data Fusion 提供一个图形界面以及一个由预配置连接器和转换功能组成的大型开源库。
BigQuery 全代管式低成本无服务器数据仓库,可根据您的存储和计算能力需求进行扩缩。BigQuery 是一个列式 ANSI SQL 数据库,能够分析 TB 级乃至 PB 级的数据。
Cloud Composer 全代管式工作流编排服务,您可以利用它编写、安排和监控跨越多个云环境和本地数据中心的流水线。
Data Catalog 可扩缩的全代管式元数据管理服务,可帮助您发现、管理和了解所有数据。
Looker 数据洞察 全代管式直观分析服务,可帮助您通过交互式信息中心从数据中汲取洞见。
Looker 连接、分析和直观呈现多云环境中的数据的企业平台。
Dataform 全代管式产品,可帮助您协作、创建和部署数据流水线,并确保数据品质。
Dataplex 代管式数据湖服务,它使用一致的控制机制集中管理、监控和治理数据湖、数据仓库和数据集市中的数据。
Analytics Hub 此平台用于在整个组织中以高效、安全的方式交换数据分析资源,以应对数据可靠性和费用的挑战。

数据生命周期

在创建系统设计时,您可以围绕任何系统中的一般数据移动或围绕数据生命周期将 Google Cloud 数据分析服务进行分组。

数据生命周期包括以下各阶段和示例服务:

以下各阶段和服务将在整个数据生命周期中运行:

数据注入

将以下数据注入最佳实践应用于您自己的环境。

确定可供注入数据的数据源

数据通常来自其他云提供商或服务,或者来自本地位置:

考虑如何在注入数据后如何处理数据。例如,Storage Transfer Service 仅将数据写入 Cloud Storage 存储桶,BigQuery Data Transfer Service 仅将数据写入 BigQuery 数据集。Cloud Data Fusion 支持多个目的地。

确定流式数据源或批量数据源

考虑您需要如何使用数据并确定具有流式或批量使用场景的位置。例如,如果您运行具有低延迟时间要求的全球流式传输服务,则可以使用 Pub/Sub。如果您需要数据以用于分析和报告,则可以将数据流式传输至 BigQuery

如果您需要从 Apache Kafka 等系统在本地或其他云环境中流式传输数据,请使用 Kafka to BigQuery Dataflow 模板。对于批处理工作负载,第一步通常是将数据注入到 Cloud Storage 中。使用 gsutil 工具或 Storage Transfer Service 注入数据。

使用自动化工具注入数据

将数据从其他系统手动迁移到云可能存在一定的难度。可能的话,请使用可让您自动化数据注入流程的工具。例如,Cloud Data Fusion 提供连接器和插件,以便通过拖放 GUI 从外部来源提取数据。如果您的团队想要编写一些代码,则 Data FlowBigQuery 可帮助自动执行数据注入。Pub/Sub 可帮助您采用低代码或代码优先的方法。如需将数据注入到存储桶中,请针对最高达 1 TB 的数据规模使用 gsutil。如需注入超过 1 TB 的数据量,请使用 Storage Transfer Service

使用迁移工具从其他数据仓库中注入

如果您需要从其他数据仓库系统(例如 Teradata、Netezza 或 Redshift)迁移,则可以使用 BigQuery Data Transfer Service 迁移协助。BigQuery Data Transfer Service 还提供第三方转移作业,可帮助您按计划从外部来源注入数据。如需了解详情,请参阅每个数据仓库的详细迁移方法

估算您的数据注入需求

您需要注入的数据量可帮助您确定要在系统设计中使用哪些服务。对于流式注入数据,Pub/Sub 可以扩展为每秒数十 GB。数据的容量、存储空间和区域要求可帮助您确定 Pub/Sub Lite 是否为较好的系统设计方案。如需了解详情,请参阅选择 Pub/Sub 或 Pub/Sub Lite

对于批量注入数据,请估算要转移的总数据量以及转移速度。查看可用的迁移方案,包括时间估算以及在线转移与离线转移对比

使用适当的工具按计划定期注入数据

Storage Transfer ServiceBigQuery Data Transfer Service 都可让您安排注入作业。如需精细化地控制注入时间或来源和目标系统,请使用 Cloud Composer 等工作流管理系统。如果需要手动操作更多的方法,则可以使用 Cloud Scheduler 和 Pub/Sub 触发 Cloud Functions 函数
如果需要管理计算基础架构,您可以将 gsutil 命令与 Cron 配合使用,来转移高达 1 TB 的数据。如果您使用此手动方法而不是 Cloud Composer,请按照为生产转移作业编写脚本的最佳实践进行操作。

查看 FTP/SFTP 服务器数据注入需求

如果您需要无代码环境从 FTP/SFTP 服务器中注入数据,则可以使用 FTP 副本插件。如果需要进行现代化改造并创建一个长期工作流解决方案,则全代管式服务 Cloud Composer 可让您从各种来源和接收器读写数据。

使用 Apache Kafka 连接器注入数据

如果您使用 Pub/Sub、Dataflow 或 BigQuery,则可以使用某个 Apache Kafka 连接器注入数据。例如,开源 Pub/Sub Kafka 连接器可让您从 Pub/Sub 或 Pub/Sub Lite 中注入数据。

其他资源

数据存储

将以下数据存储最佳实践应用于您自己的环境。

根据您的需求选择适当的数据存储区

为帮助您选择使用哪种存储解决方案,请查看并了解数据的下游使用情况。以下常见的数据使用场景提供了可供 Google Cloud 产品采纳的建议:

数据使用场景 产品推荐
基于文件 Filestore
基于对象的文件服务器 Cloud Storage
低延迟 Bigtable
时间序列 Bigtable
在线缓存 Memorystore
事务处理 Cloud SQL
商业智能 (BI) 和分析 BigQuery
批处理 Cloud Storage

Bigtable:如果传入数据是时间序列,并且您需要以低延迟时间方式对它进行访问。

BigQuery:如果您使用 SQL。

查看您的数据结构需求

对于大多数非结构化数据(例如文档和文本文件、音频和视频文件或日志),基于对象的存储区是最合适的选择。然后,您可以根据需要从对象存储空间加载和处理数据。

对于半结构化数据(例如 XML 或 JSON),您的使用场景和数据访问模式可帮助您做出选择。您可以将此类数据集加载到 BigQuery 中,以便进行自动架构检测。如果您有低延迟时间要求,则可以将 JSON 数据加载到 Bigtable 中。如果您有旧版要求或您的应用使用关系型数据库,则您也可以将数据集加载到关系存储区中。

对于 CSV、Parquet、Avro 或 ORC 等结构化数据,如果您有使用 SQL 的商业智能和分析要求,则可以使用 BigQuery。如需了解详情,请参阅如何批量加载数据。如果需要基于开放式标准和技术创建数据湖,您可以使用 Cloud Storage。

迁移数据并降低 HDFS 的费用

设法将 Hadoop 分布式文件系统 (HDFS) 数据从本地或其他云提供商迁移到更加经济实惠的对象存储系统。Cloud Storage 是企业用作替代数据存储区的最常用选项。如需了解此选项的优缺点,请参阅 HDFS 与 Cloud Storage 比较

您可以使用推送或拉取方法迁移数据。这两种方法都会使用 hadoop distcp 命令。如需了解详情,请参阅将 HDFS 数据从本地迁移到 Google Cloud

您还可以使用开源 Cloud Storage 连接器,让 Hadoop 和 Spark 作业访问 Cloud Storage 中的数据。该连接器默认安装在 Dataproc 集群上,并且可以手动安装在其他集群上

利用对象存储构建统一的数据湖

数据湖是一个集中存储区,用于存储、处理和保护大量结构化、半结构化和非结构化数据。您可以使用 Cloud Composer 和 Cloud Data Fusion 构建数据湖

如需构建现代化数据平台,您可以使用 BigQuery 而不是 Cloud Storage 作为中心数据源。BigQuery 是一种现代化数据仓库,具有存储和计算相分离功能。借助基于 BigQuery 构建的数据湖,您可以在 Cloud 控制台中从 BigQuery 执行传统分析。它还可让您从其他框架(如 Apache Spark)访问存储的数据

其他资源

处理和转换数据

在处理和转换数据时,将以下数据分析最佳实践应用于您自己的环境。

探索可在 Google Cloud 中使用的开源软件

许多 Google Cloud 服务都使用开源软件来帮助您无缝转换。Google Cloud 提供代管式无服务器解决方案,这些解决方案具有开放式 API 且与开源框架兼容,可减少出现受制于特定供应商的情况。

Dataproc 是与 Hadoop 兼容的托管式服务,可让您托管开源软件,并且几乎没有运营负担。Dataproc 支持 Spark、Hive、Pig、Presto 和 Zookeeper。它还提供 Hive Metastore 即托管式服务,以避免本身成为 Hadoop 生态系统中的单点故障。

如果您目前使用 Apache Beam 作为批处理和流式处理引擎,则可以迁移到 Dataflow。Dataflow 是一项使用 Apache Beam 的全代管式无服务器服务。使用 Dataflow 在 Beam 中编写作业,但让 Google Cloud 管理执行环境。

如果您使用 CDAP 作为数据集成平台,则可以迁移到 Cloud Data Fusion 以获得全托管式体验。

确定 ETL 或 ELT 数据处理需求

团队的经验和偏好有助于确定如何处理数据的系统设计。Google Cloud 允许您使用传统 ETL更现代化的 ELT 数据处理系统。

针对您的数据使用场景使用适当的框架

您的数据使用场景决定了要使用的工具和框架。有些 Google Cloud 产品旨在处理以下所有数据使用场景,而其他 Google Cloud 产品则仅支持一种特定使用场景。

  • 对于批量数据处理系统,您可以使用熟悉的 SQL 接口在 BigQuery 中处理和转换数据。如果您有现成的流水线在 Apache Hadoop 或 Spark 本地环境或其他公有云中运行,则可以使用 Dataproc。
    • 如果需要在批量和流式使用场景中使用一个统一的编程接口,您也可以使用 Dataflow。我们建议您对 Dataflow 和 BigQuery 进行现代化改造,并使用 Dataflow 来执行 ETL,使用 BigQuery 来执行 ELT。
  • 对于流式数据流水线,您可以使用 Dataflow 等代管式无服务器服务,它提供数据选取、自动扩缩和模板功能。如需了解详情,请参阅使用 Dataflow 构建生产级数据流水线

  • 对于实时使用场景,例如时序分析或流式视频分析,请使用 Dataflow。

保留对执行引擎的未来控制权

为了最大程度地减少出现受制于特定供应商的情况并且为了能够在将来使用其他平台,请使用 Apache Beam 编程模型Dataflow 作为托管式无服务器解决方案。使用 Beam 编程模型,您可以更改底层执行引擎,例如从 Dataflow 更改为 Apache FlinkApache Spark

使用 Dataflow 从多个来源注入数据

如需从多个来源(例如 Pub/Sub、Cloud Storage、HDFS、S3 或 Kafka)注入数据,请使用 Dataflow。Dataflow 是一项支持 Dataflow 模板的代管式无服务器服务,让您的团队可以从不同工具运行模板。

Dataflow Prime 为流水线执行过程中使用的机器提供横向和纵向自动伸缩功能。它还提供智能诊断和建议,帮助您发现问题并提出修复问题的建议。

发现、识别和保护敏感数据

使用敏感数据保护来检查和转换结构化和非结构化数据。敏感数据保护适用于位于 Google Cloud 中任意位置的数据,例如 Cloud Storage 或数据库中的数据。您可以对敏感数据进行分类、遮盖和标记化处理,以便继续安全地将其用于下游处理。使用敏感数据保护执行扫描 BigQuery 数据对大规模数据集中的个人身份信息进行去标识化和重标识处理等操作。

对数据转换流程进行现代化改造

使用 Dataform 以代码形式编写数据转换,并默认开始使用版本控制。您还可以采用软件开发最佳做法,例如 CI/CD、单元测试以及 SQL 代码版本控制。Dataform 支持所有主要云数据仓库产品和数据库,例如 PostgreSQL。

其他资源

数据分析和仓库

将以下数据分析和仓库最佳实践应用于您自己的环境。

查看您的数据存储需求

数据湖和数据仓库并不互斥。数据湖对于非结构化和半结构化数据存储和处理非常有用。数据仓库最适合用于分析和商业智能。

查看您的数据需求,以帮助确定数据的存储位置以及哪种 Google Cloud 产品最适合处理和分析您的数据。BigQuery 等产品可以处理 PB 级数据,并随着您的需求而增长。

发现从传统数据仓库迁移到 BigQuery 的机会

查看您环境中当前正在使用的传统数据仓库。为降低复杂性并降低费用,请发现将传统数据仓库迁移到 BigQuery 等 Google Cloud 服务的机会。如需了解详情并查看示例场景,请参阅将数据仓库迁移到 BigQuery

规划数据的联合访问事宜

查看您的数据要求以及如何与其他产品和服务进行交互。确定您的数据联合需求,并创建适当的系统设计。

例如,BigQuery 允许您定义可从其他来源(如 Bigtable、Cloud SQL、Cloud Storage 或 Google 云端硬盘)读取数据的外部表。您可以将这些外部来源与您存储在 BigQuery 中的表进行联接。

使用 BigQuery 灵活槽提供按需突发容量

有时,您需要额外的容量来执行需要大量计算资源的实验性或探索性分析。BigQuery 允许您以灵活槽的形式获取额外的计算容量。当需求较高或您希望完成重要分析时,灵活槽便可为您提供帮助。

了解迁移到 BigQuery 时的架构差异

BigQuery 同时支持星型和雪花型架构,但默认情况下使用嵌套和重复字段。与其他架构相比,嵌套和重复字段更易于读取和关联。如果数据以星型或雪花型架构表示,并且您想要迁移到 BigQuery,请在您的系统设计中检查是否对流程或分析进行任何必要更改。

其他资源

报告和直观呈现

将以下报告和可视化最佳实践应用于您自己的环境。

使用 BigQuery BI Engine 直观呈现您的数据

BigQuery BI Engine 是一项高速内存中分析服务。您可以使用 BI Engine 分析存储在 BigQuery 中的数据,并且支持亚秒级查询响应时间和高并发操作。BI Engine 已集成到 BigQuery API 中。使用预留的 BI Engine 容量,根据您的需求来管理按需价格或固定价格。 BI Engine 还可以与需要亚秒级响应时间的其他 BI 或自定义信息中心应用搭配使用。

使用 Looker 对商业智能流程进行现代化改造

Looker 是用于提供商业智能、数据应用和嵌入式分析的现代化企业平台。您可以基于数据快速而准确地创建一致的数据模型,还可以访问事务和分析数据存储区中的数据。Looker 还可以分析多个数据库和云中的数据。如果您有现成的 BI 流程和工具,我们建议您进行现代化改造并使用中央平台,例如 Looker。

其他资源

使用工作流管理工具

数据分析涉及许多流程和服务。数据在数据分析生命周期内会跨不同的工具和处理流水线移动。如需管理和维护端到端数据流水线,请使用适当的工作流管理工具。Cloud Composer 是一款基于开源 Apache Airflow 项目的全托管式工作流管理工具。

您可以使用 Cloud Composer 启动 Dataflow 流水线使用 Dataproc 工作流模板。Cloud Composer 还可以帮助您创建 CI/CD 流水线以测试、同步和部署 DAG使用 CI/CD 流水线进行数据处理工作流。 如需了解详情,请观看 Cloud Composer:开发最佳实践

迁移资源

如果您已运行数据分析平台,并且希望将部分或全部工作负载迁移到 Google Cloud,请查看以下迁移资源以了解最佳实践和指导:

后续步骤

了解 Google Cloud AI 和机器学习的系统设计最佳实践,包括以下内容:

探索架构框架中的其他类别,例如可靠性、卓越运营以及安全性、隐私权和合规性。