本页面介绍了如何将辅助版本功能与 Dataproc Metastore 搭配使用。
借助辅助版本,您可以将两个不同版本的 Hive Metastore 连接到单个 Dataproc Metastore 服务。此配置可让您支持多个需要在不同 Hive Metastore 版本上运行的数据处理引擎。
例如,使用辅助版本,您可以将多个 Dataproc 集群连接到同一 Dataproc Metastore 服务。在此配置中,一个集群可以运行 Dataproc 版本 2.0,而另一个集群可以运行 Dataproc 版本 1.5。Dataproc 2.0 集群可以连接到公开 Hive 3.1.2 版本的端点,而 Dataproc 1.5 集群会连接到公开 Hive 2.3.6 版本的端点。
辅助版本的工作原理
当您启用辅助版本时,Dataproc Metastore 会为每个 Hive Metastore 版本公开一个单独的端点。但是,这两个端点会继续共享同一元数据数据库。
此功能不允许您将不同的元数据集用于单个 Dataproc Metastore 服务。相反,它提供了一种扩展和增强服务之间的兼容性的方法。
注意事项
常规
您只能为每个 Dataproc Metastore 服务创建一个辅助版本。
必须将辅助版本配置为使用低于主要版本的 Hive Metastore 版本。
辅助版本维护的日志文件与主要版本分开。如需调试 Hive Metastore 问题,您可以使用 Cloud Logging。
功能支持
辅助版本不支持以下功能:
- 导入元数据、导出元数据
从 Metastore 备份、从备份恢复 Metastore
与元数据相关的功能(导入/导出/备份/恢复)只能与主版本一起使用,因为这两个版本之间的后端元数据是共享的。
某些 Hive 方法可能在辅助版本和主要版本之间不兼容。此兼容性取决于您为主要版本和辅助版本使用的 Hive 版本,以及 Hive 版本之间兼容的方法。
辅助版本不支持主要 Dataproc Metastore 实例的所有功能。例如,与辅助版本 2.3.6 对接的 Hive 2 客户端不支持将记录插入 Hive 事务表中。但是,与主要版本 3.1.2 对接的 Hive 3 客户端支持此操作。
如果较低 Hive 版本中的功能在较高 Hive 版本中被弃用,则对应的较低辅助版本将不支持已弃用的功能。例如,Hive 2 支持索引,但如果主要版本运行 Hive 3.1.2,运行 Hive 2.3.6 的辅助版本将不支持索引。
禁止使用辅助版本创建事务表或在辅助版本的事务表中插入任何数据。
版本之间的共享属性
创建辅助版本时,某些属性在辅助版本和主要版本之间共享,并且保持通用状态。其他属性不会共用,并且在这两个版本之间是分开的。
下表列出了这些差异。
属性 | 常用 | 单独 |
---|---|---|
端点 | ✓ | |
Hive 配置替换* | ✓ | |
Kerberos 配置 | ✓ | |
端点协议 (Thrift/gRPC) | ✓ | |
Thrift 端口 | ✓ | |
工件 Cloud Storage 存储桶 | ✓ | |
层级 | ✓ | |
维护时段 | ✓ | |
发布版本 | ✓ | |
加密配置 | ✓ | |
数据库类型 | ✓ | |
Data Catalog 同步切换开关 | ✓ | |
请求数指标 | ✓ | |
网络配置 | ✓ |
* Hive 配置替换在辅助版本和主要版本之间保持独立。但是,辅助版本会引用替换项的合并列表(主要版本 + 辅助版本)。在这种情况下,辅助配置优先于主要配置。
准备工作
必需的角色
如需获取创建使用辅助版本的 Dataproc Metastore 所需的权限,请让管理员根据最小权限原则向您授予项目的以下 IAM 角色:
-
授予对 Dataproc Metastore 资源的完全控制权 (
roles/metastore.editor
) -
授予对所有 Dataproc Metastore 资源的完整访问权限,包括 IAM 政策管理 (
roles/metastore.admin
)
如需详细了解如何授予角色,请参阅管理访问权限。
此预定义角色包含 metastore.services.create
权限,创建使用辅助版本的 Dataproc Metastore 需要该权限。
为新服务创建辅助版本
以下示例展示了启用辅助版本所遵循的步骤的简化版本。如需查看必须遵循整个过程的完整分步说明,请参阅创建 Dataproc Metastore。
控制台
在 Google Cloud 控制台中,打开 Dataproc Metastore 页面:
在 Dataproc Metastore 页面顶部,点击创建按钮。
此时会打开创建服务页面。
在辅助版本配置下,启用辅助版本。
点击添加辅助版本。
为您的辅助版本输入一个名称。
为您的辅助版本选择一个版本。
可选:如需将映射应用于辅助版本,请点击 + 添加替换项。
点击完成。
根据需要为您的服务选择其余配置。
点击提交。
gcloud CLI
如需创建具有辅助版本的 Dataproc Metastore 服务,请运行以下
gcloud metastore services create
命令之一:gcloud metastore services create SERVICE \ --location=LOCATION \ --auxiliary-versions=AUXILIARY_VERSIONS, ...
SERVICE
:您的 Dataproc Metastore 服务的名称。LOCATION
:要在其中创建 Dataproc Metastore 服务的区域。AUXILIARY_VERSIONS
:要为辅助版本部署的 Hive Metastore 版本列表(以英文逗号分隔)。仅支持一个辅助版本。请使用以下格式:"2.3.6"
。AUXILIARY_VERSIONS_FROM_FILE
:包含辅助版本配置的 YAML 文件的路径。如需了解详情并查看示例,请参阅 SDK 文档。
验证创建操作是否成功。
curl
如需创建具有辅助版本的 Dataproc Metastore 服务,请使用 create
方法。
curl -X POST -s -i \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-d '{"network":"projects/PROJECT_ID/global/networks/default", "port": 9083, "hive_metastore_config": {"auxiliary_versions": {"aux-version1": {"version": "AUX_VERSION"} } } }' \
-H "Content-Type:application/json" \
https://metastore.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/services?service_id=SERVICE_ID
替换以下内容:
SERVICE_ID
:新的 Dataproc Metastore 服务的名称。PROJECT_ID
:您要在其中创建 Dataproc Metastore 服务的 Google Cloud 项目的 ID。LOCATION
:您的 Dataproc Metastore 所在的区域。AUX_VERSIONS
:要部署的 Hive Metastore 版本的逗号分隔列表。仅支持一个辅助版本。
更新现有服务的辅助版本
以下说明介绍了如何更新使用辅助版本的现有 Dataproc Metastore 服务。
运行更新操作时,您可以完成以下任务:
- 添加新的辅助版本。
- 删除现有的辅助版本。
添加或修改现有辅助版本的替换项。
控制台
在 Google Cloud 控制台中,打开 Dataproc Metastore 页面:
在 Dataproc Metastore 页面上,点击要更新的服务的服务名称。
服务详细信息页面会打开。
在配置标签页上,点击修改。
系统随即会打开修改服务页面。
在辅助版本配置部分,点击切换开关以启用或停用辅助版本。
您可以完成以下任务:
如需删除现有的辅助版本,请点击删除。
如需添加新的辅助版本,请点击添加辅助版本。
如需将覆盖映射应用于辅助版本,请点击 + 添加覆盖设置。
点击提交。
gcloud CLI
如需更新使用辅助版本的 Dataproc Metastore 服务,请运行以下
gcloud metastore services update
命令之一:gcloud metastore services update SERVICE \ --location=LOCATION \ --add-auxiliary-versions=AUXILIARY_VERSIONS, ...
或
gcloud metastore services update SERVICE \ --location=LOCATION \ --update-auxiliary-versions-from-file=AUXILIARY_VERSIONS_FROM_FILE
替换以下内容:
SERVICE
:您的 Dataproc Metastore 服务的名称。LOCATION
:您的 Dataproc Metastore 所在的区域。AUXILIARY_VERSIONS
:要部署的辅助 Hive Metastore 版本的英文逗号分隔列表。AUXILIARY_VERSIONS_FROM_FILE
:包含辅助版本配置的 YAML 文件的路径;如需了解详情并查看示例,请参阅 SDK 文档。
验证更新是否成功。
curl
如需更新使用辅助版本的 Dataproc Metastore 服务,请使用 patch
方法。
curl -X PATCH -s -i \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-d '{"hive_metastore_config": {"auxiliary_versions": {"aux-version1": {"version": "AUX_VERSION} } } }' \
-H "Content-Type:application/json" \
https://metastore.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/services/SERVICE_ID?update_mask=hive_metastore_config.auxiliary_versions
替换以下内容:
SERVICE_ID
:您的 Dataproc Metastore 服务的名称。PROJECT_ID
:要在其中创建 Dataproc Metastore 服务集群的 Google Cloud 项目的 ID。LOCATION
:您的 Dataproc Metastore 所在的区域。AUX_VERSIONS
:要部署的辅助 Hive Metastore 版本的英文逗号分隔列表。