附加 Dataproc 或自行管理的集群

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

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

准备工作

  • 为实现最佳网络连接,我们要求您在 Dataproc Metastore 服务所在的区域中创建 Dataproc 集群。

  • Dataproc 映像与 Dataproc Metastore Hive 版本必须兼容:

    • Dataproc 2.x 映像需要使用 Hive 3.1.2 创建的 Dataproc Metastore 服务。

    • Dataproc 1.x 映像需要使用 Hive 2.3.6 或 3.1.2 创建的 Dataproc Metastore 服务,但使用 2.3.6 时性能最佳。

    如需详细了解 Dataproc 映像版本,以及了解 Dataproc 映像使用的 Hive 版本,请参阅 Dataproc 版本控制

  • 如果您使用的是跨项目部署,则必须在创建 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 集群在同一项目中的服务),集群和 Metastore 必须位于同一网络。

    • 您可以将 Dataproc Metastore 服务关联到整个对等互连网络上的任何 Dataproc 集群。为此,您必须在使用 gcloud dataproc clusters create CLUSTER_NAME 时提供以下 Hive 属性配置设置。

      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 网络的子网。r若要使用网络项目中的网络或子网创建集群,您必须配置共享网络权限

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

创建服务后,您可以使用 Google Cloud Console、gcloud 工具或 Dataproc API 创建并关联将该服务用作其 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 集群

以下说明演示了如何使用 Google Cloud Console、gcloud 工具或 Dataproc Metastore API 来创建和关联 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 值

后续步骤