附加 Managed Service for Apache Spark 集群或自行管理的集群

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

连接其中一项服务后,该服务会在查询执行期间将您的 Dataproc Metastore 服务用作其 Hive metastore。

准备工作

所需的角色

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

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

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

所需权限

创建 Dataproc Metastore 和 Managed Service for Apache Spark 集群需要以下权限:

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

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

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

Managed Service for Apache Spark 集群

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

注意事项

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

Apache Thrift

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

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

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

  • 如果您的 Managed Service for Apache Spark 集群与 Dataproc Metastore 服务属于不同的项目,则必须在创建 Managed Service for Apache Spark 集群之前先设置额外权限

gRPC

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

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

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

  • 如果您的 Managed Service for Apache Spark 集群与 Dataproc Metastore 服务属于不同的项目,则必须在创建 Managed Service for Apache Spark 集群之前先设置额外权限

创建集群并关联 Dataproc Metastore

以下说明介绍了如何创建 Managed Service for Apache Spark 集群并从 Dataproc Metastore 服务连接到该集群。以下说明假定您已创建 Dataproc Metastore 服务

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

控制台

  1. 在 Google Cloud 控制台中,打开 Managed Service for Apache Spark 创建集群页面:

    打开创建集群

  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:新的 Managed Service for Apache Spark 集群的名称。
  • PROJECT_ID:您在其中创建 Dataproc Metastore 服务的项目的项目 ID。
  • LOCATION:您在其中创建 Dataproc Metastore 服务的同一区域。
  • SERVICE:您要附加到集群的 Dataproc Metastore 服务的名称。
  • SCOPES:(可选)如果您的 Dataproc Metastore 服务使用 gRPC 端点协议,请使用 cloud-platform

REST

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

使用 Managed Service for Apache Spark 集群属性关联集群

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

如果您的 Dataproc Metastore 服务使用 Private Service Connect,或者您想将 Managed Service for Apache Spark 集群关联到 Dataproc Metastore 服务的辅助版本,请按照以下说明操作。

您可以通过以下两种方式使用 ENDPOINT_URIWAREHOUSE_DIR 属性关联 Managed Service for Apache Spark 集群:

选项 1:在创建 Managed Service for Apache Spark 集群时

创建 Managed Service for Apache Spark 集群时,请使用具有以下 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:新的 Managed Service for Apache Spark 集群的名称。
  • ENDPOINT_URI:Dataproc Metastore 服务的端点 URI
  • WAREHOUSE_DIRHive 仓库目录的位置。

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

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

  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

替换以下内容:

后续步骤