创建 Dataproc Metastore 服务后,您可以附加以下任一服务:
- Dataproc 集群。
- 自行管理的 Apache Hive 实例、Apache Spark 实例或 Presto 集群。
连接其中一项服务后,该服务会在查询执行期间将您的 Dataproc Metastore 服务用作其 Hive Metastore。
准备工作
必需的角色
如需获取创建 Dataproc Metastore 和 Dataproc 集群所需的权限,请让管理员向您授予以下 IAM 角色:
-
如需授予对 Dataproc Metastore 资源的完全控制权,请执行以下任一操作:
-
用户帐号或服务帐号的 Dataproc Metastore Editor (
roles/metastore.editor
) -
用户帐号或服务帐号的 Dataproc Metastore Admin (
roles/metastore.admin
)
-
用户帐号或服务帐号的 Dataproc Metastore Editor (
-
如需创建 Dataproc 集群,请对 Dataproc 虚拟机服务帐号拥有 (
roles/dataproc.worker
) 权限 -
如需授予对 Hive 仓库目录的读写权限,请对 Dataproc 虚拟机服务帐号拥有 (
roles/storage.objectAdmin
) 权限
如需详细了解如何授予角色,请参阅管理访问权限。
这些预定义角色包含创建 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 集群
Dataproc 是一项代管式 Apache Spark 和 Apache Hadoop 服务,可让您利用开源数据工具进行批处理、查询、流式传输和机器学习。
注意事项
在创建并连接 Dataproc 集群之前,请检查您的 Dataproc Metastore 服务使用的端点协议。此协议定义了 Hive Metastore 客户端如何访问存储在 Dataproc Metastore 中的元数据。此选择还会影响可与服务集成和使用的功能。
Apache Thrift
如果您使用 Apache Thrift 端点协议,请考虑以下网络要求:
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 集群。
控制台
在 Google Cloud 控制台中,打开 Dataproc 创建集群页面:
在集群名称字段中,输入集群的名称。
对于区域和可用区菜单,请选择您在其中创建 Dataproc Metastore 服务的同一区域。您可以选择任何可用区。
点击自定义集群标签页。
在网络配置部分中,选择您在其中创建 Dataproc Metastore 服务的同一网络。
在 Dataproc Metastore 部分中,选择要关联的 Dataproc Metastore 服务。如果您尚未创建服务,可以选择创建新服务。
可选:如果您的 Dataproc Metastore 服务使用 gRPC 端点协议:
- 点击 Manage Security(管理安全性)标签页。
- 在项目访问权限部分中,选择为此集群启用 cloud-platform 范围。
根据需要配置其余服务选项。
如需创建集群,请点击创建。
新集群会显示在“集群”列表中。在集群可供使用之前,集群状态会显示为正在预配。准备就绪后,状态将更改为 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_URI
和 WAREHOUSE_DIR
。
如果您的 Dataproc Metastore 服务使用 Private Service Connect,或者您希望将 Dataproc 集群关联到 Dataproc Metastore 服务的辅助版本,请按照以下说明操作。
您可以通过以下两种方式使用 ENDPOINT_URI
和 WAREHOUSE_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_DIR
:Hive 仓库目录的位置。
方法 2:更新 hive-site.xml
文件
您也可以直接修改集群的 hive-site.xml
文件,从而关联 Dataproc 集群。
- 使用 SSH 连接到
.*-m
集群。 打开
/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>
替换以下内容:
重启 HiveServer2:
sudo systemctl restart hive-server2.service
自行管理的集群
自行管理的集群可以是 Apache Hive 实例、Apache Spark 实例或 Presto 集群。
关联自行管理的集群
在客户端配置文件中设置以下值:
hive.metastore.uris=ENDPOINT_URI
hive.metastore.warehouse.dir=WAREHOUSE_DIR
替换以下内容: