主要概念

了解核心无边界 Lakehouse 术语有助于您评估 Lakehouse 架构,并在 Google Cloud上配置目录、表、查询引擎和治理。每个条目都定义了 Lakehouse 文档中使用的关键概念,并提供了指向详细指南的链接。如需了解这些组件如何协同工作,请参阅无边界 Lakehouse 的工作原理。

湖仓一体基础知识

以下概念构成了 Google Cloud 湖仓一体架构的基础。

数据湖仓

数据湖仓一体融合了数据湖的成本效益和灵活性,以及数据仓库的数据管理和性能。它可让您在 Cloud Storage 上以开放格式存储数据,并使用 BigQuery 功能,例如精确的安全控制和快速查询。

奖章架构

数据湖仓一体中的一种常见设计模式是奖章架构,它在逻辑上将数据整理成结构和质量不断提升的层:

  • 铜牌(原始)层:在 Cloud Storage 上以 Apache Iceberg 等开放格式注入和存储原始数据。
  • 白银(清理)层:对原始数据进行清理、过滤和丰富,将其转换为标准化表格。
  • 黄金(精选)层:提供经过全面精选和汇总的业务级表。BigQuery 通常用于提供黄金层,以实现高性能使用、报告和分析。

开放互操作性

开放互操作性是指多个分析和事务系统(例如 BigQuery、Apache Spark、Apache Flink 和 Trino)能够对 Apache Iceberg 等开放格式的单一数据副本进行操作。这样就无需重复数据,并可在各种工具中提供一致的数据视图。

Lakehouse 运行时目录

Lakehouse 运行时目录是一种集中式无服务器元数据服务,可作为 Google Cloud Lakehouse 的单一事实来源。它让多个引擎(例如 Apache Spark、Apache Flink、Trino 和 BigQuery)能够同时发现和查询相同的表。引擎通过目录端点连接到该目录。如需了解详情,请参阅 Lakehouse 运行时目录简介。

资源层次结构

Lakehouse 运行时目录按照与 Apache Iceberg 标准一致的层次结构来整理元数据,并将逻辑身份映射到物理存储路径。

目录

目录是 Lakehouse 运行时目录中的顶级逻辑容器。它定义了表数据的存储位置以及提供其元数据的区域。如需了解详情,请参阅创建目录。

目录类型

创建目录时,您可以在两种存储模型之间进行选择:

  • 多存储桶目录(推荐):让您可以独立命名目录,并配置默认存储位置 (default_location) 以及 restricted_locations 中最多 128 个额外的 Cloud Storage 存储桶或子路径。配置客户端查询引擎(例如 Spark 或 Trino)时,请将仓库路径设置为 bl://projects/PROJECT_ID/catalogs/CATALOG_ID。
  • 单存储桶目录:一种旧版配置,其中目录锁定到单个 Cloud Storage 存储桶,并继承该存储桶的名称。配置客户端查询引擎时,请将仓库路径设置为 gs://CLOUD_STORAGE_BUCKET_NAME。

如需了解详情,请参阅目录和存储位置。

命名空间

命名空间是目录中表的逻辑分组。对于熟悉 BigQuery 的用户,命名空间在功能上类似于数据集。命名空间会沿用其父级目录的区域,并且不支持嵌套。

表

表是指向 Cloud Storage 中数据的实体。对于 Apache Iceberg 表,表元数据包含架构、分区信息以及通过 metadata.json 文件指向当前表状态的指针。如需了解 Lakehouse 支持的表类型,请参阅表类型。

P.C.N.T 命名惯例

P.C.N.T 命名惯例是一种由四个部分组成的惯例,用于在 BigQuery 中唯一标识和查询 Lakehouse 运行时目录中的表。它代表 Project.Catalog.Namespace.Table:

  • 项目: Google Cloud 项目 ID。
  • 目录:Lakehouse 运行时目录中的目录名称。
  • 命名空间:表的逻辑分组(类似于数据集)。
  • 表:数据表的名称。

目录端点

目录端点是查询引擎用于连接到 Lakehouse 运行时目录的协议接口。您使用的端点决定了您可以使用的表格式和引擎。

Apache Iceberg REST Catalog 端点

Apache Iceberg REST Catalog 端点实现了开放标准 Iceberg REST Catalog API。它是新工作负载的推荐端点,可在开源引擎和 BigQuery 之间提供读写互操作性。它支持多存储桶目录、凭证发放和跨区域复制(预览版)。如需了解详情,请参阅 Apache Iceberg REST Catalog 端点概览。

Apache Hive 目录端点

Apache Hive 目录端点为依赖于 Apache Hive metastore (HMS) 接口的开源工作负载提供兼容性。由于 Lakehouse 运行时目录提供此端点,因此您无需维护自托管式 Hive metastore 即可运行 Apache Hive 或 Spark 工作负载。该端点管理标准 Hive 和 Spark 表,而不是 Apache Iceberg 表,并支持对 Cloud Storage 中的数据使用客户管理的加密密钥 (CMEK)。如需了解详情,请参阅关于 Hive 目录端点。

适用于 BigQuery 的自定义 Apache Iceberg 目录

适用于 BigQuery 的自定义 Apache Iceberg 目录是一种早期集成,它使用目录插件 (BigQueryMetastoreCatalog) 让开源引擎在 BigQuery 中存储 Apache Iceberg 表定义。命名空间会映射到 BigQuery 数据集,因此您可以使用标准 BigQuery 数据集语法查询这些表。对于新工作负载,请改用 Apache Iceberg REST Catalog 端点。如需了解详情,请参阅适用于 BigQuery 的自定义 Apache Iceberg 目录。

表类型

Google Cloud 的 Lakehouse 支持多种表类型,具体取决于用于管理数据的引擎和您使用的目录端点。如需详细比较,请参阅比较表类型。

Lakehouse 运行时目录中的 Apache Iceberg 表

这些是 Apache Iceberg 表,由 Lakehouse 运行时目录通过 Apache Iceberg REST 目录端点进行管理和提供,数据存储在 Cloud Storage 中。开源引擎对这些表具有读写权限。 BigQuery 具有读取权限,并且在您启用 BigQuery DML 时具有写入权限(预览版)。对于大多数开放式湖仓一体工作负载,建议使用此选项。如需了解详情,请参阅管理 Apache Iceberg 表。

Apache Hive 表

这些是标准的 Apache Hive 和 Spark 表,采用 Parquet、ORC、Avro 和 Delta Lake 等格式,Lakehouse 运行时目录通过 Apache Hive 目录端点管理这些表。开源引擎具有读取和写入权限,而 BigQuery 具有只读权限。如需使用 Delta Lake 表,您可以使用与 Delta 兼容的引擎(例如 Apache Spark)创建这些表,并在 metastore 中注册这些表。如需了解详情,请参阅支持的存储格式和类型。

BigQuery 表

这些表通过 BigQuery 进行管理。

Apache Iceberg 托管表

这些是您通过 BigQuery 创建并存储在 Cloud Storage 中的 Apache Iceberg 表。BigQuery 会处理所有数据布局和优化。虽然多个引擎可以读取这些表,但只有 BigQuery 引擎可以直接写入这些表。这些表与 Lakehouse 运行时目录中的 Apache Iceberg 表不同。如需了解详情,请参阅 Apache Iceberg 托管表。

原生表

这些表由 BigQuery 管理,并将数据存储在 BigQuery 存储空间中。您可以将这些表连接到 Lakehouse 运行时目录。

外部表

外部表位于 Lakehouse 运行时目录之外。 其数据和元数据在 Cloud Storage、Amazon S3 或 Azure Blob Storage 等存储空间中自行管理,BigQuery 通过连接访问这些数据和元数据。BigQuery 只能读取这些表中的数据。

表格功能和选项

除非另有说明,否则以下功能适用于 Lakehouse 运行时目录中的 Apache Iceberg 表。

Apache Iceberg 表版本

Lakehouse 运行时目录支持 Apache Iceberg V2 表和 V3 表(预览版)。V3 表支持二进制删除向量,让您无需重写整个数据文件即可删除特定行。不支持 Iceberg V1 表;您必须先将其升级到 V2。如需了解详情,请参阅在 Iceberg V3 表中使用二进制删除向量。

表演变

借助表演进,您可以随着时间的推移更改表的架构或分区规范,而无需重写表数据或重新创建表。Lakehouse 运行时目录中的 Apache Iceberg 表默认也支持灵活的列名称,因此列名称可以包含空格和国际字符等字符。

时间旅行

借助时间旅行,您可以查询特定时间点或快照 ID 对应的表数据。这对于审核、重现实验或在意外删除后恢复数据非常有用。开源引擎可以在表属性中配置的保留期内进行时间旅行,而 BigQuery 时间旅行仅限于 7 天。

表格选项

表选项是表属性,可为各个 Apache Iceberg 表启用 Google 管理的功能。如需了解详情,请参阅配置表选项。

BigQuery DML

BigQuery DML 处于预览版阶段。设置 gcp.biglake.bigquery-dml.enabled 表属性后,BigQuery 可以使用 GoogleSQL DDL 和 DML 语句(INSERT、UPDATE、DELETE 和 MERGE)创建、更改和修改表,而开源引擎可以继续读取和写入同一个表。

表管理

表管理(预览版)可自动执行 Apache Iceberg 表的存储空间维护。设置 gcp.biglake.table-management.enabled 表属性后,Lakehouse 会运行后台压缩(合并)、快照过期和垃圾回收,以保持查询性能和存储效率。表管理要求目录使用凭据发放。如需了解详情,请参阅启用表管理。

更改历史记录

借助更改历史记录,您可以使用 GoogleSQL APPENDS 表值函数跟踪在指定时间范围内附加到 Apache Iceberg 托管式表的行。您可以使用它来增量维护副本、审核数据添加或触发下游流水线,而无需进行全表扫描。如需了解详情,请参阅使用更改历史记录。

元数据缓存

元数据缓存可提高 BigQuery 外部表的查询性能。它会在 BigQuery 存储空间中存储表元数据的副本,从而减少在查询执行期间从 Cloud Storage 读取元数据文件的需求。

数据注入和迁移

Lakehouse 提供了多种方法,可将数据加载到 Apache Iceberg 表中,以及从现有 metastore 移动元数据。

批量导入表格

借助 Dataflow 作业构建器模板,您可以将现有的 Apache Iceberg、Delta Lake 表和 Parquet 文件导入 Lakehouse 管理的 Apache Iceberg 表中,而无需编写代码。

流式注入

您可以使用开源引擎(例如 Spark 或 Kafka)、Dataflow 或 BigQuery Storage Write API (gRPC) 将数据流式传输到 Apache Iceberg 表中,该 API 提供事务性、仅一次写入。您还可以将 BigQuery 持续查询的输出直接写入 Apache Iceberg 托管表。

变更数据捕获 (CDC)

CDC 提取通过应用插入、更新和删除操作(而不是重新加载整个表)来使 Apache Iceberg 表与源系统保持同步。Apache Iceberg 托管表支持 BigQuery CDC 注入(预览版),您可以使用 Dataflow 从 Apache Iceberg 和 Delta Lake 表(预览版)迁移 CDC 日志。

Metastore 迁移

元存储迁移会将表元数据从现有元存储移至 Lakehouse 运行时目录,而无需复制数据文件。您可以从 Dataproc Metastore 向 Apache Iceberg REST 目录端点或 Apache Hive 目录端点运行一次性迁移或试运行,也可以从 Hive metastore(预览版)等外部 metastore 进行迁移。

跨云数据访问

借助跨云数据访问,您可以直接从 Google Cloud查询存储在其他云和 SaaS 平台中的数据,而无需迁移文件或构建 ETL 流水线。如需了解详情,请参阅跨云数据访问简介。

联合目录

联合目录是 Lakehouse 运行时目录中的一种目录,可连接到远程目录提供方,并通过 Apache Iceberg REST 目录端点公开其表。然后,您可以使用 BigQuery、Managed Service for Apache Spark 或 Apache Spark 查询这些表。支持的远程目录提供商包括 Databricks Unity Catalog、AWS Glue Data Catalog、Snowflake Horizon Catalog、Workday Data Lake 和 SAP Business Data Cloud (SAP BDC)。如需了解详情,请参阅查询远程数据。

后台元数据刷新

后台元数据刷新是指联合目录根据刷新间隔定期从远程目录同步命名空间和表元数据的过程。Lakehouse 使用 OIDC 令牌联合或存储在 Secret Manager 中的凭据向远程目录进行身份验证。

跨云传输

跨云数据访问将后台元数据刷新与查询数据传输分开。您可以选择通过公共互联网或通过跨云互连专用连接来路由其中一种或两种流量,以满足安全和成本要求。为了限制数据渗漏,您还可以使用 VPC Service Controls 保护联合目录端点。

跨云缓存

跨云缓存会将从远程对象存储中读取的文件块存储在运行查询的 Google Cloud 区域中,因此重复查询会从缓存(而非远程云)中读取。缓存有助于降低跨云出站流量费用,默认处于停用状态;您可以在联合目录或 BigQuery 跨云连接中选择启用。如需了解详情,请参阅智能缓存。

身份模式

身份模式决定了哪个身份对远程目录运行查询:

  • 服务身份(默认):后台元数据刷新和查询以目录的服务账号身份运行。
  • 用户身份联合:查询以最终用户的身份运行,这使远程目录能够强制执行自己的权限,并将审核日志归因于各个用户。Databricks Unity Catalog 支持此模式。

SAP BDC 集成

SAP BDC 集成支持双向数据流。联合功能使用 Delta Sharing 协议将 SAP BDC 共享同步到 Lakehouse,以便您从 BigQuery 查询这些共享。发布功能可与 SAP BDC 共享 Apache Iceberg 表或 Knowledge Catalog 数据产品,而无需迁移数据。如需了解详情,请参阅 SAP BDC 集成简介。

公共数据集

无边界 Lakehouse 托管通过 Apache Iceberg REST 目录端点提供的公共数据集,提供只读访问权限,以便进行探索和测试,而无需管理基础设施。Google 会支付存储费用,您只需为运行的查询付费。如需了解详情,请参阅公共数据集。

安全和治理

Lakehouse 结合了 Identity and Access Management (IAM)、存储访问权限委托和网络控制,可确保 Lakehouse 的安全。

资源级访问权限控制

目录、命名空间和表上的 IAM 政策控制着谁可以查看和修改 Lakehouse 资源。如需了解详情,请参阅管理目录、命名空间和表 ACL 以及角色和权限。

凭证分发

凭据分发是一种安全机制,可在使用 Lakehouse 运行时目录时加强访问权限控制。Apache Iceberg REST Catalog 端点不会向用户授予直接存储桶权限,而是提供短期、范围缩小的存储凭据,其访问权限仅限于查询所需的特定表路径。表管理也需要凭证分发。如需了解详情,请参阅凭证分发。

连接

连接是一种 BigQuery 资源,用于存储访问外部数据所需的凭证。在 Google Cloud 的 Lakehouse 中,连接通过让连接的服务账号代表您访问存储桶,将访问权限委托给 Cloud Storage。

VPC Service Controls

VPC Service Controls 服务边界通过限制对 Lakehouse API (biglake.googleapis.com) 和存储表数据的 Cloud Storage 存储桶的访问,帮助防止数据渗漏。如需了解详情,请参阅将 VPC Service Controls 与凭证发放搭配使用。

区域端点

区域端点会限制请求,只有当目标目录资源存在于端点指定的位置时,请求才能继续处理,这有助于您满足数据驻留要求。如需了解详情,请参阅区域端点。

审核日志记录

Cloud Audit Logs 会记录 Lakehouse 资源上的管理和数据访问活动。如需了解详情,请参阅查看审核日志。

统一治理

通过与 Knowledge Catalog 集成,统一治理可让您集中定义和强制执行安全和数据管理政策。在 Lakehouse 运行时目录中注册表时,系统会自动在 Knowledge Catalog 中注册相应条目,从而在不移动或复制文件的情况下,跨引擎实现搜索和发现、数据沿袭、数据分析以及 AI 生成的数据洞见(预览版)。

查询引擎和工具

Google Cloud 的 Lakehouse 将存储与计算分离,因此各种分析引擎可以处理相同的开放表。

开源引擎

开源引擎通过使用标准 Apache Iceberg 客户端配置,通过 Apache Iceberg REST 目录端点连接到 Lakehouse 运行时目录。如需了解特定于引擎的设置,请参阅 Apache Spark、Apache Flink 和 Trino。您还可以使用 Terraform 管理 Lakehouse 资源。

Managed Service for Apache Spark

Managed Service for Apache Spark(原 Dataproc Serverless)提供全代管式运行时,用于处理 Apache Iceberg 等开放表格式。它支持两种主要执行模式:

  • 无服务器批处理:专为自动化、非交互式数据处理流水线和 ETL 工作负载而设计。这种按执行付费模式消除了集群管理,消除了作业之间的资源争用,并自动执行基础设施维护。
  • 无服务器交互式会话:专为探索性数据分析、数据工程师和数据科学实验而设计。交互式会话使用 Spark Connect 或远程 Spark 内核为 Apache Spark 笔记本提供支持,从而提供无需设置基础设施的自动扩缩环境。

服务层级

在 Managed Service for Apache Spark 上运行 Apache Spark 工作负载时,您可以选择以下服务层级:

  • 标准层级:默认执行层级,适用于标准批处理工作负载。
  • 高级层级:提供高级功能,包括对无服务器交互式笔记本会话的支持,以及 Lightning Engine 等性能加速功能。

会话模板

会话模板可简化无服务器交互式会话的配置。管理员可以通过环境模板定义和持久保存常见环境设置(例如目录属性、网络配置和运行时版本),从而提高一致性并最大限度地减少重复设置。您可以使用 Google Cloud 控制台、gcloud CLI、REST API 或 Terraform 创建和管理会话模板。

对话式分析

对话式分析(预览版)可让您在 BigQuery 中使用自然语言提示查询 Lakehouse 运行时目录中的表,包括跨云来源。

可靠性

Lakehouse 运行时目录为使用 Apache Iceberg REST 目录端点(预览版)的目录提供代管式灾难恢复。如需了解详情,请参阅跨区域复制和灾难恢复简介。

跨区域复制

当目录使用双区域或多区域 Cloud Storage 存储桶时,跨区域复制会将目录元数据从主要区域复制到次要区域,从而在区域服务中断期间保持目录可用。Cloud Storage 会复制底层表数据。

故障切换

故障切换会切换目录及其所有命名空间和表的主要区域和次要区域。软故障切换会等待所有数据同步,然后新的主实例才会接受写入,这可以防止数据丢失,并且适合计划内测试。硬故障切换会优先考虑可用性,即使先前的主实例无法访问,也会让新的主实例接管。