设置多区域 Dataproc Metastore 服务

本页面介绍了如何设置多区域 Dataproc Metastore 服务。如需详细了解多区域位置 Dataproc Metastore 服务的工作原理,请参阅 Dataproc Metastore 区域

准备工作

所需的角色

如需获得创建多区域 Dataproc Metastore 服务所需的权限,请让管理员根据最小特权原则向您授予项目的以下 IAM 角色:

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

此预定义角色包含 metastore.services.create 权限 需要 创建多区域 Dataproc Metastore 服务。

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

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

多区域 Dataproc Metastore 服务简介

多区域 Dataproc Metastore 服务将您的数据存储在 并使用两个区域来运行工作负载。例如: 多区域 nam7 包含 us-central1us-east4 区域。

  • 多区域 Dataproc Metastore 服务可复制元数据 跨两个区域公开访问 Hive 的相关端点 Metastore。对于 gRPC,每个区域公开一个端点。对于 Thrift,一个 每个子网的端点公开。

  • 多区域 Dataproc Metastore 服务提供 active-active 高可用性 (HA) 集群配置。这个 配置意味着工作负载可以在运行作业时访问任一区域。 它还可以为您的服务提供故障切换机制。例如,如果您的 当主要区域端点出现故障时,您的工作负载会自动进行路由 发送到次要区域这有助于防止 Dataproc 服务中断 作业。

注意事项

以下注意事项适用于多区域 Dataproc Metastore 服务。

创建多区域 Dataproc Metastore 服务

选择以下某个标签页,了解如何创建多区域服务 使用 Thrift 或 gRPC 端点协议 Dataproc Metastore 服务 2。

gRPC

在创建使用 gRPC 端点协议的多区域服务时,您需要 而无需设定任何具体的投放网络设置gRPC 协议处理 网络路由

控制台

  1. 在 Google Cloud 控制台中,前往 Dataproc Metastore 页面。

    前往 Dataproc Metastore

  2. 在导航栏中,点击 +创建

    系统随即会打开创建 Metastore 服务对话框。

  3. 选择 Dataproc Metastore 2

  4. 价格与容量部分,选择企业 Plus 版 - 双区域

  5. 对于端点协议,选择 gRPC

  6. 如需创建并启动服务,请点击提交

    新的 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

替换以下内容:

  • SERVICE:您的 Dataproc Metastore 服务的名称。
  • MULTI_REGION多区域 您将在其中创建 Dataproc Metastore 服务。
  • INSTANCE_SIZE:多区域 Dataproc Metastore 的实例大小。例如 smallmediumlarge。如果为 INSTANCE_SIZE 指定了值,请勿为 SCALING_FACTOR 指定值。
  • SCALING_FACTOR:缩放比例 Dataproc Metastore 服务的名称。例如 0.1。 如果您为 SCALING_FACTOR 指定了值,则请勿为 INSTANCE_SIZE

旧货

创建使用 Thrift 端点协议的多区域服务时,您必须设置适当的子网设置。在这种情况下,对于您使用的每个 VPC 网络,您必须在每个区域中至少提供一个子网。

例如,如需创建 nam7 多区域,您必须同时提供 us-central1us-east4 区域。

控制台

  1. 在 Google Cloud 控制台中,前往 Dataproc Metastore 页面。

    前往 Dataproc Metastore

  2. 在导航栏中,点击 +创建

    系统随即会打开创建 Metastore 服务对话框。

  3. 选择 Dataproc Metastore 2

  4. 价格和容量部分,选择企业 Plus 版 - 双区域

    如需了解详情,请参阅定价方案和伸缩配置

  5. 服务名称字段中,为您的服务输入一个唯一的名称。

    如需了解命名惯例,请参阅资源命名惯例

  6. 对于端点协议,选择 Thrift

  7. 对于网络配置,请提供构成您所选多区域配置的子网。

  8. 对于其余服务配置选项,请使用提供的默认值。

  9. 如需创建并启动服务,请点击提交

    新的 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 服务。
  • SUBNET1SUBNET2: 构成多区域配置的子网您可以使用子网的 ID、完全限定网址或相对名称。您最多可以指定 6 个子网。
  • LOCATION1,LOCATION2: 构成多区域配置的位置列表。 您可以使用营业地点的 ID。例如,对于 nam7 多区域,您可以使用 us-central1us-east4
  • NETWORK_CONFIG_FROM_FILE:指向 包含您的网络配置的 YAML 文件。
  • INSTANCE_SIZE实例大小 多区域 Dataproc Metastore 的快照。例如,smallmediumlarge。如果您为 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
    }
  }

替换以下内容:

  • PROJECT_ID:Google Cloud 项目 ID (包含 Dataproc Metastore 服务)。
  • LOCATION:您的 Google Cloud Storage 存储区域 Dataproc Metastore 服务所在的目录。
  • SUBNET1SUBNET2:一个列表 构成多区域配置的子网您可以使用 子网的 ID、完全限定网址或相对名称。您可以 指定最多五个子网。
  • SCALING_FACTOR:缩放比例 您要用于服务的对象。

将 Dataproc Metastore 连接到 Dataproc 集群

选择以下某个标签页,了解如何连接多区域级 Dataproc 集群中的 Dataproc Metastore 服务。

gRPC

如需连接 Dataproc 集群,请选择与您使用的 Dataproc Metastore 版本对应的标签页。

Dataproc Metastore 3.1.2

  1. 为 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。
  2. 如需创建集群,请运行以下 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

  1. 为 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 网络。
  2. 为 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
  3. 检索 Dataproc Metastore 服务的仓库目录 并将其存储在变量中。

    WAREHOUSE_DIR=$(gcloud metastore services describe "${METASTORE_ID}" --project "${METASTORE_PROJECT}" --location "${MULTI_REGION}" --format="get(hiveMetastoreConfig.configOverrides[hive.metastore.warehouse.dir])")
  4. 创建配置了多区域级的 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 文件

  1. 找到您的应用的端点 URI仓库目录 Dataproc Metastore 服务。您可以选择公开的任意端点。
  2. 在 Google Cloud 控制台中,前往虚拟机实例页面。
  3. 在虚拟机实例列表中,点击虚拟机实例所在行中的 SSH Dataproc 主节点 (.*-m)。

    此时会在节点的主目录中打开一个浏览器窗口。

  4. 打开 /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>
    

    替换以下内容:

  5. 重启 HiveServer2:

    sudo systemctl restart hive-server2.service
    

方法 2:使用 gcloud CLI

运行以下 gcloud CLI gcloud dataproc clusters create 命令。

  1. 找到您的应用的端点 URI仓库目录 Dataproc Metastore 服务。您可以 选择公开端点中的任意一个
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
  • ENDPOINT:您的 Dataproc Metastore 使用的资源 ID。
  • WAREHOUSE_DIR:您的 Dataproc Metastore。

自定义区域配置

您可以将 Dataproc Metastore 服务配置为使用自定义区域配置。

借助自定义区域配置,您的服务可以运行两个独立的 区域。这可以跨区域实现冗余,这意味着工作负载可以 在运行作业时访问任一区域。它还提供了一种故障切换机制 。例如,如果其中一个区域端点出现故障,您的 工作负载会自动路由到其他区域。这有助于防止 工作负载和作业中断。

通过自定义区域配置,您还可以控制元数据的存储位置 以及在何处公开 Hive Metastore 端点。这可以提升性能 管理工作负载

注意事项

以下注意事项适用于使用自定义区域配置配置的 Dataproc Metastore 服务:

  • 地区/配对限制:并非所有区域和组合都适用 允许。
  • 只读限制:只读区域无法接受写入操作。 如果选择了只读区域,而读写区域无法访问,则写入操作将无法处理。
  • 配置不可变性:区域配置一旦设置便无法再更改 已更改。
  • 仅限美国堆栈:自定义双区域仅支持 US 堆栈,并且 仅限美国边界内

创建自定义区域服务

要设置自定义区域,请在创建您的自定义区域时选择两个相邻的区域, 服务。这个组合可以是两个读写区域,也可以是一个读写区域 和一个只读区域

控制台

  1. 在 Google Cloud 控制台中,前往 Dataproc Metastore 页面。

    前往 Dataproc Metastore

  2. 在导航栏中,点击 +创建

    系统随即会打开创建 Metastore 服务对话框。

  3. 选择 Dataproc Metastore 2

  4. 价格和容量部分,选择企业 Plus 版 - 双区域

  5. 服务名称字段中,为您的服务输入一个唯一的名称。

  6. 对于数据位置,选择 US(大洲)

    系统随即会显示自定义区域部分。

  7. 自定义区域下,选择读写区域和只读 区域。

  8. 对于其余服务配置选项,请使用提供的默认值。

  9. 如需创建并启动服务,请点击提交

    新的 Metastore 服务会显示在 Dataproc Metastore 上 页面。状态显示正在创建,直到服务可供使用。 处理完毕后,状态会更改为有效。 预配服务可能需要几分钟时间。

gcloud

要创建使用自定义区域的 Dataproc Metastore 服务,请执行以下操作: 运行以下 gcloud CLI gcloud beta metastore services create 命令。

gcloud beta metastore services create SERVICE \
  --read-write-regions

替换以下内容:

  • SERVICE:您的 Dataproc Metastore 服务。
  • READ_WRITE_REGIONS:支持的读写区域 是自定义区域配置的一部分。
  • READ_ONLY_REGIONS:支持的只读区域,是自定义区域配置的一部分。

后续步骤