关联 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 仓库目录,请执行以下操作: 对 Dataproc 虚拟机服务帐号拥有 orgpolicy.policy.get1,resourcemanager.projects.get,resourcemanager.projects.list,storage.objects.*,storage.multipartUploads.* 权限

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

如需详细了解特定的 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. 点击 Manage Security(管理安全性)标签页。
    2. 项目访问权限部分中,选择为此集群启用 cloud-platform 范围
  8. 根据需要配置其余服务选项。

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

    新集群会显示在“集群”列表中。在集群可供使用之前,集群状态会显示为正在预配。准备就绪后,状态将更改为 Running

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 集群时,请将属性标志与以下 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

替换以下内容:

后续步骤