附加 Dataproc 或自行管理的集群

创建 Dataproc Metastore 服务后,您可以创建和关联将该服务用作其 Hive Metastore 的 Dataproc 集群。

您还可以通过修改客户端配置关联将 Dataproc Metastore 服务用作其 Hive Metastore 的自行管理的 Apache Hive/Apache Spark/Presto 集群。

准备工作

  • 为获得最佳网络连接,请在 Dataproc Metastore 服务所在的区域中创建 Dataproc 集群。

  • Dataproc 映像与 Dataproc Metastore Hive 版本必须兼容。检查以下映像版本控制页面,以确保 Hive 版本兼容:

    如需了解详情,请参阅 Dataproc 映像版本列表

  • 若要使用任何 Dataproc Metastore 服务(包括与 Dataproc 集群在同一项目中的服务),集群和 Metastore 必须位于同一网络。

    • 通过在使用 gcloud dataproc clusters create CLUSTER_NAME 时提供以下 Hive 属性配置设置,您可以将 Dataproc Metastore 服务附加到整个对等网络上的所有 Dataproc 集群。

      gcloud dataproc clusters create CLUSTER_NAME \
          --properties="hive:hive.metastore.uris=$ENDPOINT_URI,hive:hive.metastore.warehouse.dir=$WAREHOUSE_DIR/hive-warehouse"
      

      请参阅关联使用 Dataproc Metastore 服务的自行管理的集群

    • 集群还可以使用 Metastore 网络的子网。如需使用网络项目中的子网创建集群,您必须配置共享网络权限

访问权限控制机制

  • 确保您的 Dataproc 虚拟机服务帐号具有访问 Dataproc Metastore 仓库目录的对象读写权限。如需了解详情,请参阅 Hive 仓库目录

  • 如果您使用的是跨项目部署,则必须在创建 Dataproc Metastore 集群之前先设置额外权限。跨项目部署可以由两个或三个项目组成,其中,Dataproc 集群位于集群项目中,Dataproc Metastore 服务位于 Metastore 项目中,网络位于前面两个项目的任何一个或其自己的网络项目中。另外,当网络位于自己的网络项目中时,Dataproc 集群和 Dataproc Metastore 服务也可以共享一个项目。

    下图简要展示了在部署 Dataproc Metastore 集群时可能的项目配置:

    部署 Dataproc Metastore 和 Dataproc 集群时可能的配置项目概览

    • 在使用与服务属于不同项目的 VPC 网络时,您必须在 gcloud metastore services create SERVICE 中提供整个相对资源名称。

      gcloud metastore services create SERVICE \
          --network=projects/HOST_PROJECT/global/networks/NETWORK_ID
      

关联使用 Dataproc Metastore 服务的 Dataproc 集群

您可以创建并附加将 Dataproc Metastore 服务用作其 Hive Metastore 的 Dataproc 集群。

设置跨项目部署

在跨项目部署中,如果 Dataproc 集群和 Dataproc Metastore 服务属于不同的项目,则需要设置权限。如果网络位于其自己的网络项目中,则当 Dataproc 集群和 Dataproc Metastore 服务共享项目时,您无需执行此设置。

配置网络权限后,您必须向集群项目的 Dataproc Service Agent 授予 Metastore 项目中的 Dataproc Metastore Viewer 角色。Dataproc Service Agent 帐号的格式为 service-<cluster-project-number>@dataproc-accounts.iam.gserviceaccount.com。您必须引用集群项目的项目编号。

控制台

如需查找项目编号,请执行以下操作:

  1. 导航到“IAM 和管理”设置标签页

  2. 从页面顶部的项目列表中,选择您要用于创建 Dataproc 集群的项目。

  3. 记下项目编号。

配置权限:

  1. 导航到 IAM 标签页

  2. 从页面顶部的项目列表中,选择 Metastore 项目。

  3. 点击添加

    1. 新成员字段中输入服务帐号。

    2. 从“角色”菜单中,选择 Dataproc Metastore > Dataproc Metastore Viewer

    3. 点击添加

您现在可以使用 Metastore 项目的 Dataproc Metastore 服务和该服务所在的网络或子网来创建 Dataproc 集群。

创建 Dataproc 集群

以下说明介绍了如何创建和连接 Dataproc 集群。

控制台

  1. 在 Cloud Console 中,打开 Dataproc 创建集群页面:

    打开 Cloud Console 中的“创建集群”页面

  2. 输入集群名称字段。

  3. 区域可用区菜单上,为集群选择区域和可用区。您可以选择不同的区域,以在指定的区域内隔离资源和元数据存储位置。如果您选择不同的区域,则可以为可用区选择“无偏好”,以便让 Dataproc 为您的集群选择所选区域内的可用区(请参阅 Dataproc 自动选择可用区)。

  4. 点击自定义集群标签页。

  5. 网络配置部分中,选择创建 Metastore 服务期间指定的同一网络。

  6. Dataproc Metastore 部分中,选择您的 Metastore 服务。如果您尚未创建服务,则可以选择创建新服务

  7. 点击创建以创建集群。

新集群会显示在“集群”列表中。在集群准备好投入使用之前,集群状态会被列为“正在预配”,然后,其状态会更改为“正在运行”。

gcloud

运行以下 gcloud dataproc clusters create 命令以创建集群。

 gcloud dataproc clusters create CLUSTER_NAME \
    --dataproc-metastore=projects/PROJECT_ID/locations/LOCATION/services/SERVICE \
    --region=LOCATION
 

CLUSTER_NAME 替换为新集群的名称。

PROJECT_ID 替换为您在其中创建了 Dataproc Metastore 服务的项目的 ID。

LOCATION 替换为您为 Dataproc Metastore 服务指定的同一区域。

SERVICE 替换为 Dataproc Metastore 服务名称。

REST

按照 API 说明使用 API Explorer 创建集群

关联使用 Dataproc Metastore 服务的自行管理的集群

创建服务后,您还可以选择通过在客户端配置中设置以下内容,关联将该服务用作其 Hive Metastore 的自行管理的 Apache Hive、Apache Spark 或 Presto 集群:

hive.metastore.uris=ENDPOINT_URI
hive.metastore.warehouse.dir=WAREHOUSE_DIR

请替换以下内容:

  • ENDPOINT_URI:用于访问 Metastore 服务的 Hive Metastore 端点 URI。

    如需查找要使用的端点 URI 值,请在 Dataproc Metastore 页面上点击您的服务名称。此操作会将您转到该服务的服务详细信息页面,您可以在其中使用以 thrift:// 开头的网址值。

  • WAREHOUSE_DIR:表示 Hive Metastore 配置替换文件的目录。它可以采用 gs://.*hive-warehouse 格式。

    如需查找要使用的仓库目录,请在 Dataproc Metastore 页面上点击您的服务名称。此操作会将您转到该服务的服务详细信息页面,您可以在其中使用 Metastore 配置替换文件下的 hive.metastore.warehouse.dir 值。

“服务详细信息”网址和 hive.metastore.warehouse.dir 值

后续步骤