本页面介绍了如何设置多区域 Dataproc Metastore 服务。如需详细了解多区域位置 Dataproc Metastore 服务的工作原理,请参阅 Dataproc Metastore 区域。
准备工作
- 启用 Dataproc Metastore 。
- 了解适用于您的项目的网络要求。
- 了解 Dataproc Metastore 区域 并选择合适的区域。
所需的角色
如需获得创建多区域 Dataproc Metastore 服务所需的权限,请让管理员根据最小特权原则向您授予项目的以下 IAM 角色:
-
授予对 Dataproc Metastore 资源的完全控制权 (
roles/metastore.editor
) -
授予对所有 Dataproc Metastore 资源的完整访问权限,包括 IAM 政策管理 (
roles/metastore.admin
)
如需详细了解如何授予角色,请参阅管理对项目、文件夹和组织的访问权限。
此预定义角色包含
metastore.services.create
权限
需要
创建多区域 Dataproc Metastore 服务。
多区域 Dataproc Metastore 服务简介
多区域 Dataproc Metastore 服务将您的数据存储在
并使用两个区域来运行工作负载。例如:
多区域 nam7
包含 us-central1
和 us-east4
区域。
多区域 Dataproc Metastore 服务可复制元数据 跨两个区域公开访问 Hive 的相关端点 Metastore。对于 gRPC,每个区域公开一个端点。对于 Thrift,一个 每个子网的端点公开。
多区域 Dataproc Metastore 服务提供 active-active 高可用性 (HA) 集群配置。这个 配置意味着工作负载可以在运行作业时访问任一区域。 它还可以为您的服务提供故障切换机制。例如,如果您的 当主要区域端点出现故障时,您的工作负载会自动进行路由 发送到次要区域这有助于防止 Dataproc 服务中断 作业。
注意事项
以下注意事项适用于多区域 Dataproc Metastore 服务。
多区域服务仅支持 Spanner 数据库类型。 请先查看支持的功能列表,然后再创建多区域 服务。
多区域服务仅支持 Dataproc Metastore 2 配置。
多区域服务在 Cloud Storage 中创建工件存储分区 多区域位置。例如:
Nam7
存储分区是在US
多区域位置创建的。
创建多区域 Dataproc Metastore 服务
选择以下某个标签页,了解如何创建多区域服务 使用 Thrift 或 gRPC 端点协议 Dataproc Metastore 服务 2。
gRPC
在创建使用 gRPC 端点协议的多区域服务时,您需要 而无需设定任何具体的投放网络设置gRPC 协议处理 网络路由
控制台
在 Google Cloud 控制台中,前往 Dataproc Metastore 页面。
在导航栏中,点击 +创建。
系统随即会打开创建 Metastore 服务对话框。
选择 Dataproc Metastore 2。
在价格与容量部分,选择企业 Plus 版 - 双区域
对于端点协议,选择 gRPC。
如需创建并启动服务,请点击提交。
新的 Metastore 服务会显示在 Dataproc Metastore 上 页面。状态显示正在创建,直到服务可供使用。 处理完毕后,状态会更改为有效。 预配服务可能需要几分钟时间。
gcloud CLI
要创建 Dataproc Metastore 多区域服务,请运行
正在关注gcloud metastore services create
命令。此命令会创建 Dataproc Metastore 版本 3.1.2。
gcloud metastore services create SERVICE \ --location=MULTI_REGION \ { --instance-size=INSTANCE_SIZE | --scaling-factor=SCALING_FACTOR } \ --endpoint-protocol=grpc
替换以下内容:
旧货
创建使用 Thrift 端点协议的多区域服务时,您必须设置适当的子网设置。在这种情况下,对于您使用的每个 VPC 网络,您必须在每个区域中至少提供一个子网。
例如,如需创建 nam7
多区域,您必须同时提供
us-central1
和 us-east4
区域。
控制台
在 Google Cloud 控制台中,前往 Dataproc Metastore 页面。
在导航栏中,点击 +创建。
系统随即会打开创建 Metastore 服务对话框。
选择 Dataproc Metastore 2。
在价格和容量部分,选择企业 Plus 版 - 双区域。
如需了解详情,请参阅定价方案和伸缩配置。
在服务名称字段中,为您的服务输入一个唯一的名称。
如需了解命名惯例,请参阅资源命名惯例。
对于端点协议,选择 Thrift。
对于网络配置,请提供构成您所选多区域配置的子网。
对于其余服务配置选项,请使用提供的默认值。
如需创建并启动服务,请点击提交。
新的 Metastore 服务会显示在 Dataproc Metastore 上 页面。状态显示正在创建,直到服务可供使用。 处理完毕后,状态会更改为有效。 预配服务可能需要几分钟时间。
gcloud CLI
如需创建 Dataproc Metastore 多区域服务,
运行以下 gcloud metastore services create
命令。
此命令会创建 Dataproc Metastore 版本 3.1.2。
gcloud metastore services create SERVICE \ --location=MULTI_REGION \ --consumer-subnetworks="projects/PROJECT_ID/regions/LOCATION1/subnetworks/SUBNET1,projects/PROJECT_ID/regions/LOCATION2/subnetworks/SUBNET2" \ { --instance-size=INSTANCE_SIZE | --scaling-factor=SCALING_FACTOR } \ --endpoint-protocol=thrift
或者,您也可以将投放网络设置存储在一个文件中,如 。
gcloud metastore services create SERVICE \ --location=MULTI_REGION \ --network-config-from-file=NETWORK_CONFIG_FROM_FILE { --instance-size=INSTANCE_SIZE | --scaling-factor=SCALING_FACTOR } \ --endpoint-protocol=thrift
替换以下内容:
SERVICE
:您的 Dataproc Metastore 服务。MULTI_REGION
: 您将在其中创建 Dataproc Metastore 服务。PROJECT_ID
:您要创建 Cloud Storage 存储分区的 Google Cloud 项目 ID 您将在其中创建 Dataproc Metastore 服务。SUBNET1
、SUBNET2
: 构成多区域配置的子网您可以使用子网的 ID、完全限定网址或相对名称。您最多可以指定 6 个子网。LOCATION1
,LOCATION2
: 构成多区域配置的位置列表。 您可以使用营业地点的 ID。例如,对于nam7
多区域,您可以使用us-central1
和us-east4
。NETWORK_CONFIG_FROM_FILE
:指向 包含您的网络配置的 YAML 文件。INSTANCE_SIZE
:实例大小 多区域 Dataproc Metastore 的快照。例如,small
。medium
或large
。如果您为INSTANCE_SIZE
指定了值,请不要 为SCALING_FACTOR
指定一个值。SCALING_FACTOR
:缩放比例 Dataproc Metastore 服务的名称。例如0.1
。 如果您为SCALING_FACTOR
指定了值,则请勿为INSTANCE_SIZE
。
REST
了解如何创建多区域 Dataproc Metastore 请按照说明使用 Google APIs Explorer。
如需配置多区域服务,请提供以下信息
在 Network Config
对象中。
"network_config": { "consumers": [ {"subnetwork": "projects/PROJECT_ID/regions/LOCATION/subnetworks/SUBNET1"}, {"subnetwork": "projects/PROJECT_ID/regions/LOCATION/subnetworks/SUBNET2"} ], "scaling_config": { "scaling_factor": SCALING_FACTOR } }
替换以下内容:
将 Dataproc Metastore 连接到 Dataproc 集群
选择以下某个标签页,了解如何连接多区域级 Dataproc 集群中的 Dataproc Metastore 服务。
gRPC
如需连接 Dataproc 集群,请选择与您使用的 Dataproc Metastore 版本对应的标签页。
Dataproc Metastore 3.1.2
为 Dataproc 集群创建以下变量:
CLUSTER_NAME=CLUSTER_NAME PROJECT_ID=PROJECT_ID MULTI_REGION=MULTI_REGION DATAPROC_IMAGE_VERSION=DATAPROC_IMAGE_VERSION PROJECT=PROJECT SERVICE_ID=SERVICE_ID
替换以下内容:
CLUSTER_NAME
:您的 Dataproc 的名称 集群。PROJECT_ID
:需要访问 Cloud Storage 存储分区的 Google Cloud 项目 包含您的 Dataproc 集群。请确保您所配置的子网 具有访问此项目的相应权限。MULTI_REGION
:需要 Google Cloud Storage 多区域 用来创建 Dataproc 集群的凭据。DATAPROC_IMAGE_VERSION
:Dataproc 映像 与 Dataproc Metastore 搭配使用的版本 服务。您必须使用2.0
或更高版本的映像版本。PROJECT
:包含 Dataproc Metastore 服务。SERVICE_ID
:您的 Dataproc Metastore 服务的服务 ID。
如需创建集群,请运行以下
gcloud dataproc clusters create
命令。--enable-kerberos
是可选的。只有在以下情况下才应添加此选项: 您的集群正在使用 kerberos。gcloud dataproc clusters create ${CLUSTER_NAME} \ --project ${PROJECT_ID} \ --region ${MULTI_REGION} \ --image-version ${DATAPROC_IMAGE_VERSION} \ --scopes "https://www.googleapis.com/auth/cloud-platform" \ --dataproc-metastore projects/${PROJECT}/locations/${MULTI_REGION}/services/${SERVICE_ID} \ [ --enable-kerberos ]
Dataproc Metastore 2.3.6
为 Dataproc Metastore 创建以下变量 服务:
METASTORE_PROJECT=METASTORE_PROJECT METASTORE_ID=METASTORE_ID MULTI_REGION=MULTI_REGION SUBNET=SUBNET
替换以下内容:
METASTORE_PROJECT
:Google Cloud 项目 该文件包含您的 Dataproc Metastore 服务。METASTORE_ID
: Dataproc Metastore 服务。MULTI_REGION
:使用多区域 Storage 存储分区 您要用于 Dataproc Metastore 服务的相关资源。SUBNET
:您为 Dataproc Metastore 服务使用的子网之一。或 用于您的服务的子网的父 VPC 网络。
为 Dataproc 集群创建以下变量:
CLUSTER_NAME=CLUSTER_NAME DATAPROC_PROJECT=DATAPROC_PROJECT DATAPROC_REGION=DATAPROC_REGION HIVE_VERSION=HIVE_VERSION IMAGE_VERSION=
r>IMAGE_VERSION 替换以下内容:
CLUSTER_NAME
:您的 Dataproc 的名称 集群。DATAPROC_PROJECT
:需要访问 Cloud Storage 存储分区的 Google Cloud 项目 包含您的 Dataproc 集群。请确保您所配置的子网 具有访问此项目的相应权限。DATAPROC_REGION
:您要创建 Dataproc 集群的 Google Cloud 区域。HIVE_VERSION
:您的 Dataproc Metastore 服务使用的应用数量。IMAGE_VERSION
:您在 Dataproc Metastore 服务中使用的 Dataproc 映像版本。- 对于 Hive Metastore 2.0 版,请使用映像版本
1.5
。 - 对于 Hive Metastore 版本 3.1.2,请使用映像版本
2.0
。
- 对于 Hive Metastore 2.0 版,请使用映像版本
检索 Dataproc Metastore 服务的仓库目录 并将其存储在变量中。
WAREHOUSE_DIR=$(gcloud metastore services describe "${METASTORE_ID}" --project "${METASTORE_PROJECT}" --location "${MULTI_REGION}" --format="get(hiveMetastoreConfig.configOverrides[hive.metastore.warehouse.dir])")
创建配置了多区域级的 Dataproc 集群 Dataproc Metastore。
gcloud dataproc clusters create ${CLUSTER_NAME} \ --project "${DATAPROC_PROJECT}" \ --region ${DATAPROC_REGION} \ --scopes "https://www.googleapis.com/auth/cloud-platform" \ --subnet "${SUBNET}" \ --optional-components=DOCKER \ --image-version ${IMAGE_VERSION} \ --metadata "hive-version=${HIVE_VERSION},dpms-name=${DPMS_NAME}" \ --properties "hive:hive.metastore.uris=thrift://localhost:9083,hive:hive.metastore.warehouse.dir=${WAREHOUSE_DIR}" \ --initialization-actions gs://metastore-init-actions/mr-metastore-grpc-proxy/metastore-grpc-proxy.sh
旧货
方法 1:修改 hive-site.xml 文件
- 找到您的应用的端点 URI 和仓库目录 Dataproc Metastore 服务。您可以选择公开的任意端点。
- 在 Google Cloud 控制台中,前往虚拟机实例页面。
在虚拟机实例列表中,点击虚拟机实例所在行中的 SSH Dataproc 主节点 (
.*-m
)。此时会在节点的主目录中打开一个浏览器窗口。
打开
/etc/hive/conf/hive-site.xml
文件。sudo vim /etc/hive/conf/hive-site.xml
您将看到类似于以下内容的输出:
<property> <name>hive.metastore.uris</name> <value>ENDPOINT_URI</value> </property> <property> <name>hive.metastore.warehouse.dir</name> <value>WAREHOUSE_DIR</value> </property>
替换以下内容:
重启 HiveServer2:
sudo systemctl restart hive-server2.service
方法 2:使用 gcloud CLI
运行以下 gcloud CLI gcloud dataproc clusters create
命令。
gcloud dataproc clusters create CLUSTER_NAME \ --network NETWORK \ --project PROJECT_ID \ --scopes "https://www.googleapis.com/auth/cloud-platform" \ --image-version IMAGE_VERSION \ --properties "hive:hive.metastore.uris=ENDPOINT,hive:hive.metastore.warehouse.dir=WAREHOUSE_DIR"
替换以下内容:
CLUSTER_NAME
:您的 Dataproc 集群的名称。NETWORK
:需要访问 Cloud Storage 存储分区的 Google Cloud 项目 包含您的 Dataproc 集群。请确保您所配置的子网 具有访问此项目的相应权限。PROJECT_ID
:您的 Dataproc Metastore 服务使用的应用数量。IMAGE_VERSION
:Dataproc 映像 与 Dataproc Metastore 服务搭配使用的版本。- 对于 Hive Metastore 2.0 版,请使用映像版本
1.5
。 - 对于 Hive Metastore 版本 3.1.2,请使用映像版本
2.0
。
- 对于 Hive Metastore 2.0 版,请使用映像版本
ENDPOINT
:您的 Dataproc Metastore 使用的资源 ID。WAREHOUSE_DIR
:您的 Dataproc Metastore。
自定义区域配置
您可以将 Dataproc Metastore 服务配置为使用自定义区域配置。
借助自定义区域配置,您的服务可以运行两个独立的 区域。这可以跨区域实现冗余,这意味着工作负载可以 在运行作业时访问任一区域。它还提供了一种故障切换机制 。例如,如果其中一个区域端点出现故障,您的 工作负载会自动路由到其他区域。这有助于防止 工作负载和作业中断。
通过自定义区域配置,您还可以控制元数据的存储位置 以及在何处公开 Hive Metastore 端点。这可以提升性能 管理工作负载
注意事项
以下注意事项适用于使用自定义区域配置配置的 Dataproc Metastore 服务:
- 地区/配对限制:并非所有区域和组合都适用 允许。
- 只读限制:只读区域无法接受写入操作。 如果选择了只读区域,而读写区域无法访问,则写入操作将无法处理。
- 配置不可变性:区域配置一旦设置便无法再更改 已更改。
- 仅限美国堆栈:自定义双区域仅支持
US
堆栈,并且 仅限美国边界内
创建自定义区域服务
要设置自定义区域,请在创建您的自定义区域时选择两个相邻的区域, 服务。这个组合可以是两个读写区域,也可以是一个读写区域 和一个只读区域
控制台
在 Google Cloud 控制台中,前往 Dataproc Metastore 页面。
在导航栏中,点击 +创建。
系统随即会打开创建 Metastore 服务对话框。
选择 Dataproc Metastore 2。
在价格和容量部分,选择企业 Plus 版 - 双区域。
在服务名称字段中,为您的服务输入一个唯一的名称。
对于数据位置,选择 US(大洲)。
系统随即会显示自定义区域部分。
在自定义区域下,选择读写区域和只读 区域。
对于其余服务配置选项,请使用提供的默认值。
如需创建并启动服务,请点击提交。
新的 Metastore 服务会显示在 Dataproc Metastore 上 页面。状态显示正在创建,直到服务可供使用。 处理完毕后,状态会更改为有效。 预配服务可能需要几分钟时间。
gcloud
要创建使用自定义区域的 Dataproc Metastore 服务,请执行以下操作:
运行以下 gcloud CLI gcloud beta metastore services create
命令。
gcloud beta metastore services create SERVICE \ --read-write-regions
替换以下内容: