附加 Dataproc 或自行管理的集群

创建 Dataproc Metastore 服务后,您可以关联以下任一项,以将该服务用作其 Hive Metastore:

准备工作

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

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

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

  • 为了使用任何 Dataproc Metastore 服务(包括与 Dataproc 集群位于同一项目中的一项服务),该集群和 Metastore 必须位于同一网络中。集群还可以使用 Dataproc Metastore 服务的子网。如果 Dataproc 集群与网络属于不同的项目,您必须配置共享网络权限

  • 请注意,如果您使用的是个人身份验证集群,则必须使用启用了 gRPC 的 Metastore。如需详细了解如何将 Metastore 转换为 gRPC 或创建新的基于 gRPC 的 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 集群

您可以创建并附加将 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. 在 Google Cloud Console 中,打开 Dataproc 创建集群页面:

    在 Google 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 创建集群

使用 ENDPOINT_URIWAREHOUSE_DIR 关联 Dataproc 集群

您可以使用 ENDPOINT_URIWAREHOUSE_DIR 属性关联 Dataproc 集群。如果您的 Dataproc Metastore 服务使用 Private Service Connect 或者您希望关联 Dataproc Metastore 服务的辅助版本,则此做法非常有用。

如需详细了解这些属性及其位置,请参阅附加自行管理的集群

您可以通过以下两种方式使用 ENDPOINT_URIWAREHOUSE_DIR 属性关联 Dataproc 集群:

  • 选项 1:在创建 Dataproc 集群时,提供以下 Hive 属性配置设置。

    1. 运行以下 gcloud dataproc clusters create 命令:

         gcloud dataproc clusters create CLUSTER_NAME \
             --properties="hive:hive.metastore.uris=$ENDPOINT_URI,hive:hive.metastore.warehouse.dir=$WAREHOUSE_DIR/hive-warehouse"
      
  • 方式 2:使用 NetworkConfig 中列出的端点 URI 更新 Dataproc 集群上的 hive-site.xml

    1. 通过 SSH 连接到 Dataproc 集群的主实例,并执行以下操作:

      1. 在 Dataproc 集群上修改 /etc/hive/conf/hive-site.xml

        <property>
          <name>hive.metastore.uris</name>
          <!-- Update this value. -->
          <value>ENDPOINT_URI</value>
        </property>
        <!-- Add this property entry. -->
        <property>
          <name>hive.metastore.warehouse.dir</name>
          <value>WAREHOUSE_DIR</value>
        </property>
        
      2. 重启 HiveServer2:

        sudo systemctl restart hive-server2.service
        

关联自行管理的集群

创建服务后,您可以通过在客户端配置中设置以下内容,关联将该服务用作其 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 值

后续步骤