元数据联合是一种服务,可让您通过单个端点访问多个元数据来源。
如需设置联合,您需要创建联合服务,然后配置元数据源。之后,该服务会公开一个 gRPC 端点,您可以使用该端点访问所有元数据。
例如,使用联合,您可以创建一个 Dataproc 集群,该集群通过单个端点公开多个 Dataproc Metastore 服务。之后,您可以通过 Spark 或 Hive 等开源软件 (OSS) 引擎运行大数据作业,以访问多个 metastore 中的元数据。
联邦的运作方式
在 Spark 或 Hive 上运行的 OSS 大数据工作负载会向 Hive Metastore API 发送请求,以在运行时提取元数据。
- Hive Metastore 接口同时支持读取和写入方法。联合服务公开了 Hive Metastore 接口的 gRPC 版本。
- 在运行时,当联合服务收到请求时,它会检查来源顺序以检索相应的元数据。
元数据来源
创建联邦服务时,您必须添加元数据源。您可以使用以下来源作为后端元数据存储区:
- Dataproc Metastore 实例。
- 包含一个或多个 BigQuery 数据集的项目。
- Dataplex Universal Catalog 数据湖(预览版)。
来源限制
以下部分列出了使用各种元数据源时必须遵守的限制。
所有来源
以下限制适用于所有元数据源:
- 联合服务不包含自己的数据。相反,联合服务仅提供来自其某个元数据源的元数据。
- 联合服务不能成为另一联合服务中的元数据源。
Dataproc Metastore
如果您使用 Dataproc Metastore 作为来源,则存在以下限制:
- 联合服务只能通过 gRPC 端点使用。如需将 Dataproc Metastore 与联邦搭配使用,请使用 gRPC 端点创建 metastore。
联合服务可以附加到单区域或多区域 Dataproc Metastore 服务。
如果多区域 Metastore 与联邦服务位于不同的项目中,请向联邦项目的 Dataproc Metastore 服务账号授予对多区域中配置的 Dataproc Metastore 实例的
metastore.services.get
权限。
BigQuery
如果您使用的项目包含 BigQuery 数据集作为来源,则必须满足以下条件:
- 授予正确的 Identity and Access Management 角色,以访问包含 BigQuery 数据集的项目。
- 添加至少一个 Dataproc Metastore 服务作为来源,并添加 BigQuery 数据集。
Dataplex Universal Catalog 数据湖
- 授予包含
dataplex.lakes.get
权限的 IAM 角色。 - 添加至少一个 Dataproc Metastore 服务作为来源,以及您的 Dataplex Universal Catalog 数据湖。
来源排序
您的联合服务会按优先级顺序处理元数据请求。此概念称为来源排序。在运行时,当联合服务收到请求时,它会检查来源排序并完成以下操作之一:
- 如果请求包含数据库名称。请求会路由到包含数据库名称的后端 Metastore。如果多个 Metastore 包含相同的数据库名称,则请求会路由到排名最低的 Metastore。
- 如果请求创建或删除数据库。请求会路由到排名最低的元存储区。
- 如果请求不包含数据库名称,并且不创建或删除数据库。请求会路由到排名最低的 Dataproc Metastore 实例。未指定数据库的 Hive Metastore 请求的一些示例包括
set_ugi
和create_database
。 - 如果所有元存储区都不包含数据库。OSS 引擎会返回相当于“未找到”错误的响应。