关联 Dataproc 集群或自行管理的集群

创建 Dataproc Metastore 服务后,您可以关联以下任一服务:

关联其中任一服务后,该服务会在执行查询期间使用您的 Dataproc Metastore 服务作为其 Hive Metastore。

准备工作

所需的角色

如需获得创建 Dataproc Metastore 和 Dataproc 集群所需的权限,请让您的管理员为您授予以下 IAM 角色:

如需详细了解如何授予角色,请参阅管理对项目、文件夹和组织的访问权限

这些预定义角色包含创建 Dataproc Metastore 和 Dataproc 集群所需的权限。如需查看所需的确切权限,请展开所需权限部分:

所需权限

如需创建 Dataproc Metastore 和 Dataproc 集群,您需要具备以下权限:

  • 如需创建 Dataproc Metastore,请执行以下操作: metastore.services.create 在用户账号或服务账号中
  • 如需创建 Dataproc 集群,请执行以下操作: dataproc.clusters.create 在用户账号或服务账号中
  • 如需访问 Hive 仓库目录,请执行以下操作: orgpolicy.policy.get1,resourcemanager.projects.get,resourcemanager.projects.list,storage.objects.*,storage.multipartUploads.*Dataproc 虚拟机服务账号

您也可以使用自定义角色或其他预定义角色来获取这些权限。

如需详细了解特定 Dataproc Metastore 角色和权限,请参阅使用 IAM 管理访问权限

Dataproc 集群

Dataproc 是一项托管式 Apache Spark 和 Apache Hadoop 服务,借助该服务,您可以充分利用开源数据工具来执行批处理、查询、流式传输和机器学习。

注意事项

在创建并附加 Dataproc 集群之前,请检查您的 Dataproc Metastore 服务使用的端点协议。此协议定义了 Hive Metastore 客户端如何访问存储在 Dataproc Metastore 中的元数据。此选择还会影响您可以与服务集成和使用的功能。

Apache Thrift

如果您使用 Apache Thrift 端点协议,请考虑以下网络要求:

  • 默认情况下,您应在同一网络中创建 Dataproc 集群和 Dataproc Metastore 服务。您的 Dataproc 集群还可以使用 Dataproc Metastore 服务网络的子网。

  • 如果您的 Dataproc 集群属于与网络不同的项目,您必须配置共享网络权限

  • 如果您的 Dataproc 集群属于与 Dataproc Metastore 服务不同的项目,则必须先设置额外权限,然后才能创建 Dataproc 集群。

gRPC

如果您使用 gRPC 端点协议,请考虑以下网络要求:

  • 使用 gRPC 端点协议创建 Dataproc Metastore 后,您必须授予其他 IAM 角色

  • 如果您使用的是 Dataproc 个人集群身份验证,则您的 Dataproc Metastore 必须使用 gRPC 端点协议。

  • 如果您的 Dataproc 集群属于与 Dataproc Metastore 服务不同的项目,则必须先设置额外权限,然后才能创建 Dataproc 集群。

创建集群并关联 Dataproc Metastore

以下说明介绍了如何创建 Dataproc 集群,以及如何通过 Dataproc Metastore 服务连接到该集群。以下说明假定您已创建 Dataproc Metastore 服务

  • 在创建 Dataproc 集群之前,请确保您选择的 Dataproc 映像与您在创建 Dataproc Metastore 时选择的 Hive Metastore 版本兼容。如需了解详情,请参阅 Dataproc 映像版本列表
  • 为优化网络连接,请在 Dataproc Metastore 服务所在的区域中创建 Dataproc 集群。

控制台

  1. 在 Google Cloud 控制台中,打开 Dataproc 创建集群页面:

    打开创建集群

  2. 集群名称字段中,为集群输入名称。

  3. 对于区域可用区菜单,请选择您创建 Dataproc Metastore 服务时所在的区域。您可以选择任何可用区。

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

  5. 网络配置部分中,选择创建 Dataproc Metastore 服务时所用的网络。

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

  7. 可选:如果您的 Dataproc Metastore 服务使用 gRPC 端点协议,请执行以下操作:

    1. 点击管理安全性标签页。
    2. 项目访问权限部分,选择为此集群启用 cloud-platform 范围
  8. 根据需要配置其余服务选项。

  9. 如需创建集群,请点击创建

    新集群会显示在“集群”列表中。在集群准备好投入使用之前,集群状态会被列为正在预配,当实例可以使用时,状态会变为正在运行

gcloud CLI

如需创建集群并关联 Dataproc Metastore,请运行以下 gcloud dataproc clusters create 命令:

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

替换以下内容:

  • CLUSTER_NAME:新 Dataproc 集群的名称。
  • PROJECT_ID:您在其中创建 Dataproc Metastore 服务的项目的 ID。
  • LOCATION:与您创建 Dataproc Metastore 服务时所在的区域相同。
  • SERVICE:您要附加到集群的 Dataproc Metastore 服务的名称。
  • SCOPES:(可选)如果您的 Dataproc Metastore 服务使用 gRPC 端点协议,请使用 cloud-platform

REST

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

使用 Dataproc 集群属性关联集群

您还可以使用 Dataproc 属性将 Dataproc 集群附加到 Dataproc Metastore。这些属性包括 Dataproc Metastore ENDPOINT_URIWAREHOUSE_DIR

如果您的 Dataproc Metastore 服务使用 Private Service Connect,或者您希望将 Dataproc 集群附加到 Dataproc Metastore 服务的辅助版本,请按照以下说明操作。

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

选项 1:在创建 Dataproc 集群时

创建 Dataproc 集群时,请将 properties 标志与以下 Hive 配置搭配使用。

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

替换以下内容:

  • CLUSTER_NAME:新 Dataproc 集群的名称。
  • ENDPOINT_URI:Dataproc Metastore 服务的端点 URI
  • WAREHOUSE_DIRHive 仓库目录的位置。

方法 2:更新 hive-site.xml 文件

您还可以通过直接修改集群的 hive-site.xml 文件来关联 Dataproc 集群。

  1. 使用 SSH 连接到 .*-m 集群。
  2. 打开 /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>
    

    替换以下内容:

  3. 重启 HiveServer2:

    sudo systemctl restart hive-server2.service
    

自行管理的集群

自行管理的集群可以是 Apache Hive 实例、Apache Spark 实例或 Presto 集群。

关联自行管理的集群

在客户端配置文件中设置以下值:

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

替换以下内容:

后续步骤