创建服务

如需创建 Dataproc Metastore 服务,请在在本地浏览器中打开的“创建服务”页面上输入服务参数,然后使用 gcloud 工具或发出 Dataproc Metastore API 方法 services.create

创建服务时,您需要为服务指定区域。如需了解哪些位置支持 Dataproc Metastore,请参阅 Cloud 位置

其他字段包括 Metastore 版本、网络、端口和服务层级。请注意,如果您未指定网络,则 Dataproc Metastore 会使用服务项目中的 default 网络。Dataproc Metastore 使用专用 IP,因此只有同一网络上的虚拟机可以访问 Dataproc Metastore 服务。

准备工作

  • 登录您的 Google Cloud 帐号。如果您是 Google Cloud 新手,请创建一个帐号来评估我们的产品在实际场景中的表现。新客户还可获享 $300 赠金,用于运行、测试和部署工作负载。
  • 在 Google Cloud Console 的项目选择器页面上,选择或创建一个 Google Cloud 项目。

    转到“项目选择器”

  • 确保您的 Cloud 项目已启用结算功能。 了解如何确认您的项目是否已启用结算功能

  • 启用 Dataproc Metastore API。

    启用 API

  • 大多数 gcloud metastore 命令需要位置信息。您可以使用 --location 标志指定位置,也可以通过设置默认位置来指定位置。

  • 请勿设置组织政策限制条件来限制 VPC 对等互连。指定 constraints/compute.restrictVpcPeering 会导致创建请求失败并显示 INVALID_ARGUMENT 错误。如果您必须设置限制条件,请使用以下命令允许 under:folders/270204312590

    gcloud resource-manager org-policies allow compute.restrictVpcPeering under:folders/270204312590 --organization ORGANIZATION_ID
    

    如需了解详情,请参阅组织政策限制条件

  • 如果您想要为 Hive Metastore 实例启用 Kerberos,则必须执行以下操作:

    • 托管您自己的 Kerberos 密钥分发中心 (KDC)。
    • 在 VPC 网络和 KDC 之间建立 IP 连接。
    • 设置包含 Hive Keytab 内容的 Secret Manager Secret。
    • 指定 KDC 和 Hive Keytab 中的主帐号。
    • 在 Google Cloud Storage 存储分区中指定 krb5.conf 文件。

    如需了解详情,请参阅配置 Kerberos

设置共享 VPC

  • 如需创建 Cloud Storage Metastore 服务,并且此网络所属服务所属的项目不属于该服务所属的项目,根据网络项目的 IAM 政策中,您必须向该服务项目的 Dataproc Metastore 服务代理授予 roles/metastore.serviceAgent (service-SERVICE_PROJECT_NUMBER@gcp-sa-metastore.iam.gserviceaccount.com)。

    gcloud projects add-iam-policy-binding NETWORK_PROJECT_ID \
        --role "roles/metastore.serviceAgent" \
        --member "serviceAccount:service-SERVICE_PROJECT_NUMBER@gcp-sa-metastore.iam.gserviceaccount.com"
    

访问权限控制机制

  • 如需创建服务,您必须具有一个包含 metastore.services.create IAM 权限的 IAM 角色。Dataproc Metastore 特定角色 roles/metastore.adminroles/metastore.editor 包含创建权限。

  • 您也可以使用 roles/ownerroles/editor 旧版角色向用户或群组授予创建权限。

如需了解详情,请参阅 Dataproc Metastore IAM 和访问权限控制

创建 Dataproc Metastore 服务

以下说明介绍了如何创建 Dataproc Metastore 服务。

控制台

  1. 在 Cloud Console 中,打开 Dataproc Metastore 页面:

    在 Cloud Console 中打开 Dataproc Metastore

  2. Dataproc Metastore 页面顶部,点击创建按钮。此时会打开创建服务页面。

    “创建服务”页面
  3. 服务名称字段中,为服务输入一个唯一名称。如需了解命名惯例,请参阅资源命名惯例

  4. 选择数据位置

  5. 选择 Hive Metastore 版本。如果未指定,系统会使用 Hive 3.1.2 版。如需了解详情,请参阅版本政策

  6. 选择发布渠道。如果未指定,则系统会使用 Stable。如需了解详情,请参阅发布渠道

  7. 输入端口。这是提供 Dataproc Metastore Thrift 接口的 TCP 端口。如果未提供,则系统会使用端口号 9083

  8. 选择服务层级。这会影响服务的容量。Developer 是默认层级。它非常适合低成本的概念验证,因为它可以提供有限的可伸缩性并且没有容错能力。Enterprise 层级提供灵活的可伸缩性、容错能力和多可用区高可用性。它可以处理大量 Dataproc Metastore 工作负载。

  9. 选择 网络。该服务必须连接到其他 Metastore 客户端(例如 Dataproc 集群)所连接的网络才能访问它们。如果未提供,系统会使用 default 网络。

    可选:点击使用共享 VPC 网络,然后输入共享 VPC 网络的项目 IDVPC 网络名称。如需了解详情,请参阅将 VPC Service Controls 与 Dataproc Metastore 搭配使用

  10. 可选:启用 Data Catalog 同步。如需了解详情,请参阅 Dataproc Metastore 到 Data Catalog 同步

  11. 可选:为服务的维护期选择星期几时段。如需了解详情,请参阅维护期

  12. 可选:启用 Kerberos keytab 文件:

    1. 点击切换开关以启用 Kerberos。

    2. 选择或输入您的 Secret 资源 ID。

    3. 选择使用最新的 Secret 版本,或者选择要使用的旧版本。

    4. 输入 Kerberos 主帐号。这是为此 Dataproc Metastore 服务分配的主帐号。

    5. 浏览到 krb5 config 文件。

  13. 可选:点击使用客户管理的加密密钥 (CMEK),然后选择客户管理的密钥。 如需了解详情,请参阅使用 CMEK(客户管理的加密密钥)

  14. 可选:如要将映射应用于 Hive Metastore,请点击 + 添加替换

  15. 可选:如需向 Metastore 服务资源添加其他元数据,请点击 + 添加标签

  16. 要创建并启动该服务,请点击提交按钮。

  17. 确认您已返回 Dataproc Metastore 页面,并且新服务显示在列表中。

gcloud

  1. 运行以下 gcloud metastore services create 命令创建服务:

    gcloud metastore services create SERVICE \
        --location=LOCATION \
        --labels=k1=v1,k2=v2,k3=v3 \
        --network=NETWORK \
        --port=PORT \
        --tier=TIER \
        --hive-metastore-version=HIVE_METASTORE_VERSION \
        --release-channel=RELEASE_CHANNEL \
        --hive-metastore-configs=K1=V1,K2=V2 \
        --kerberos-principal=KERBEROS_PRINCIPAL \
        --krb5-config=KRB5_CONFIG \
        --keytab=CLOUD_SECRET
    

    替换以下内容:

    • SERVICE:新服务的名称。
    • LOCATION:表示 Google Cloud 区域。
    • k1=v1,k2=v2,k3=v3:使用的标签。
    • NETWORK:访问服务的 VPC 网络的名称。如果使用属于与服务不同的项目的 VPC 网络,则必须提供整个资源名称,例如 projects/HOST_PROJECT/global/networks/NETWORK_ID
    • PORT:提供 Metastore Thrift 接口的 TCP 端口。默认端口:9083。
    • TIER:新服务的层级容量。
    • HIVE_METASTORE_VERSION:在此位置创建新 Metastore 服务时可以使用的 Hive Metastore 版本。服务器保证列表中只有一个 HiveMetastoreVersion 设置为 is_default
    • RELEASE_CHANNEL:服务的发布版本。
    • K1=V1,K2=V2(可选):使用的 Hive Metastore 配置。
    • KERBEROS_PRINCIPAL(可选):keytab 和 KDC 中存在的 Kerberos 主帐号。典型的主帐号格式为“primary/instance@REALM”,但系统没有规定确切的格式。
    • KRB5_CONFIG(可选):krb5.config 文件指定 KDC 和 Kerberos 大区信息,其中包括 KDC 的位置以及大区和 Kerberos 应用的默认值。
    • CLOUD_SECRET(可选):Secret Manager Secret 版本的相对资源名称。
  2. 验证创建操作是否成功。

REST

按照 API 说明使用 APIs Explorer 创建服务

使用非 RFC 1918 专用 IP 地址范围

提供的 VPC 网络可能会耗尽 Dataproc Metastore 服务所需的可用 RFC 1918 地址。如果发生这种情况,Dataproc Metastore 会尝试保留 RFC 1918 范围之外的专用 IP 地址范围,以便创建服务。如需查看受支持的非 RFC 1918 专用范围的列表,请参阅 VPC 网络文档中的有效范围

Dataproc Metastore 中使用的非 RFC 1918 专用 IP 地址可能会与连接到提供 VPC 网络的本地网络中的范围冲突。如需检查 Dataproc Metastore 预留的 RFC 1918 和非 RFC 1918 专用 IP 地址列表:

gcloud compute addresses list \
    --project NETWORK_PROJECT_ID \
    --filter="purpose:VPC_PEERING AND name ~ cluster|resourcegroup"

如果确定了冲突,无法通过重新配置本地网络缓解冲突,请删除违规的 Dataproc Metastore 服务,并在 2 小时后重新创建它。

创建 Dataproc Metastore 服务后

创建服务后,您可以创建和关联 Dataproc 集群或将该服务用作其 Hive Metastoreor 的自行管理的 Apache Hive/Apache Spark/Presto 集群。

后续步骤