创建高可用性集群

本文档介绍了如何在 High Obtainability (HO) 模式下创建 Managed Service for Apache Spark 集群。高可获取性模式可提高在需求高峰期或资源受限期间成功预配集群虚拟机的可能性,因为 Managed Service for Apache Spark 可以在创建集群时从一系列兼容的机器类型中进行选择,而无需使用固定的机器类型。

使用高可用性模式创建具有通用计算要求的集群,以帮助防止因虚拟机不可用而导致集群创建和伸缩失败。

“高可获取性”模式的运作方式

在标准集群创建请求中,您需要为集群节点指定特定机器类型(例如 n2-standard-4)。如果某个可用区中没有该特定机器类型,则创建请求会失败。

在“高可获取性”模式下,您可以为主节点、主工作节点和辅助工作节点指定灵活的资源要求,而不是固定的机器类型:

  • vCPU 核心数:您需要请求每个虚拟机实例的目标 vCPU 数量(2、4、8、16 或 32 个核心)。
  • 硬件类别:您指定性能和内存配置文件:

    • STANDARD:提供均衡的配置,每个 vCPU 约 4 GB 内存和标准永久性存储层。当前的候选机器类型包括 n4-standard、n4d-standard、n2-standard 和 n2d-standard(排名 0 偏好设置),以及 c4-standard 和 c4d-standard(排名 1 偏好设置)。
    • PERFORMANCE:提供高性能配置,每个 vCPU 约 8 GB 内存,以及更高级别的磁盘配置(更高的 IOPS 和吞吐量)。当前的候选机器类型包括 n4-highmem、n4d-highmem、n2-highmem 和 n2d-highmem(排名 0 偏好设置),以及 c4-highmem 和 c4d-highmem(排名 1 偏好设置)。
  • 实例数:您需要为每个实例组指定实例数:

    • 主实例:必须为 1 个实例。
    • 主工作节点:正整数。
    • 辅助工作器:非负整数。
  • 启动磁盘大小:可选启动磁盘大小(例如 100 GB)。

Managed Service for Apache Spark 会自动使用自动选择可用区功能来评估集群区域内的可用区,并在所请求的硬件类别中选择具有可用容量的候选机器类型。

要求和限制

高可获取性模式具有以下要求和限制:

  • 资源配额:您的项目必须在集群区域中为所选硬件类别(N4、N4D、N2、N2D、C4 和 C4D)的所有候选机器系列提供足够的 Compute Engine 资源配额。由于底层候选机器类型由 Google 控制,并且可能随时更改,因此请勿依赖特定机器类型。
  • 可用区规范:您无法指定明确的 --zone(或 zoneUri)。Managed Service for Apache Spark 会使用自动选择可用区功能自动选择可用区域中的可用区。
  • 与固定机器和节点配置互斥:
    • 使用灵活配置(--master-flexible-config、--worker-flexible-config 或 --secondary-worker-flexible-config)配置主节点、主工作节点或辅助工作节点组时,您无法为这些节点组指定标准机器类型、实例选择、实例数量、磁盘或加速器标志:
      • Master:不能与 --master-machine-type、--master-machine-types、--master-instance-selection、--master-instance-flexibility-policy-file、--master-boot-disk-size、--master-boot-disk-type、--num-master-local-ssds、--master-accelerator 或 --master-min-cpu-platform 结合使用。
      • 主工作节点:不能与 --num-workers、--worker-machine-type、--worker-machine-types、--worker-instance-selection、--worker-instance-flexibility-policy-file、--worker-boot-disk-size、--worker-boot-disk-type、--num-worker-local-ssds、--worker-accelerator 或 --worker-min-cpu-platform 结合使用。
      • 辅助工作器:不能与 --num-secondary-workers、--secondary-worker-type、--secondary-worker-machine-types、--secondary-worker-instance-selection、--secondary-worker-instance-flexibility-policy-file、--secondary-worker-boot-disk-size、--secondary-worker-boot-disk-type、--num-secondary-worker-local-ssds 或 --secondary-worker-accelerator 结合使用。
    • 在多节点集群中,如果为主节点组启用了高可用性模式,则主工作器节点组也必须使用灵活配置 (--worker-flexible-config)。
    • 如果在高可用性集群中使用辅助工作器,则它们必须使用 --secondary-worker-flexible-config,而不是标准辅助工作器标志。
  • 单节点集群:在单节点集群(--single-node 或 --cluster-type=single-node)中,只能指定 --master-flexible-config。不支持主要和次要工作器灵活配置标志。
  • 集群更新:您可以使用 gcloud dataproc clusters update 更新主要和辅助工作器的实例数量 (num-instances)。核心数、硬件类别和启动磁盘大小是创建时指定的,创建后无法修改。
  • 高可用性集群:高可用性 (HA) 集群(具有三个主节点的集群)在“高可用性”模式下不受支持。主实例数量必须为 1。

创建高可用性集群

您可以使用 Google Cloud CLI 或 Dataproc API 在高可用性模式下创建集群。

gcloud

如需在“高可用性”模式下创建集群,请运行带有 --master-flexible-config 和 --worker-flexible-config 标志的 gcloud dataproc clusters create 命令。

gcloud dataproc clusters create CLUSTER_NAME \
    --region=REGION \
    --master-flexible-config="cores=CORES,hardware-class=HARDWARE_CLASS,num-instances=1,boot-disk-size=BOOT_DISK_SIZE" \
    --worker-flexible-config="cores=CORES,hardware-class=HARDWARE_CLASS,num-instances=NUM_WORKERS,boot-disk-size=BOOT_DISK_SIZE"

替换以下内容:

  • CLUSTER_NAME:集群的名称。
  • REGION:集群的 Compute Engine 区域,例如 us-central1。请勿指定 --zone。
  • CORES:每个虚拟机实例的 vCPU 数量。必须是 2 的幂(2、4、8、16 或 32)。
  • HARDWARE_CLASS:硬件配置文件类,STANDARD 或 PERFORMANCE。
  • NUM_WORKERS:集群中的主工作器节点数。
  • BOOT_DISK_SIZE:启动磁盘的大小,例如 100GB。

添加辅助工作器

如需在“高可用性”模式下添加辅助工作器节点,请添加 --secondary-worker-flexible-config 标志:

gcloud dataproc clusters create CLUSTER_NAME \
    --region=REGION \
    --master-flexible-config="cores=4,hardware-class=STANDARD,num-instances=1,boot-disk-size=100GB" \
    --worker-flexible-config="cores=4,hardware-class=STANDARD,num-instances=2,boot-disk-size=100GB" \
    --secondary-worker-flexible-config="cores=4,hardware-class=STANDARD,num-instances=2,boot-disk-size=100GB"

创建单节点集群

如需创建单节点高可用性集群,请指定 --single-node(或 --cluster-type=single-node)和 --master-flexible-config,并省略工作器灵活配置标志:

gcloud dataproc clusters create CLUSTER_NAME \
    --region=REGION \
    --single-node \
    --master-flexible-config="cores=4,hardware-class=STANDARD,boot-disk-size=100GB"

更新集群工作器容量

如需在现有高可用性集群上扩缩主要或辅助工作器的数量,请使用 gcloud dataproc clusters update 命令:

gcloud dataproc clusters update CLUSTER_NAME \
    --region=REGION \
    --worker-flexible-config="num-instances=NEW_NUM_WORKERS"

REST

如需使用 REST API 创建高可用性集群,请发送 clusters.create 请求。在 ClusterConfig 对象中:

  1. 将 gceClusterConfig.zoneUri 留空(或省略)以启用自动选择可用区。
  2. 指定 masterFlexibleConfig 和 workerFlexibleConfig 对象。

HTTP 方法和网址:

POST https://dataproc.googleapis.com/v1/projects/PROJECT_ID/regions/REGION/clusters

请求 JSON 正文:

{
  "projectId": "PROJECT_ID",
  "clusterName": "CLUSTER_NAME",
  "config": {
    "gceClusterConfig": {
      "zoneUri": ""
    },
    "masterFlexibleConfig": {
      "numInstances": 1,
      "coreCount": 4,
      "hardwareClass": "STANDARD",
      "bootDiskSizeGb": 100
    },
    "workerFlexibleConfig": {
      "numInstances": 2,
      "coreCount": 4,
      "hardwareClass": "STANDARD",
      "bootDiskSizeGb": 100
    }
  }
}

替换以下内容:

  • PROJECT_ID:您的 Google Cloud 项目 ID。
  • REGION:要在其中创建集群的 Compute Engine 区域,例如 us-central1。
  • CLUSTER_NAME:集群的名称。

可选:如需添加辅助工作器,请添加包含所需 numInstances、coreCount、hardwareClass 和 bootDiskSizeGb 的 secondaryWorkerFlexibleConfig 对象。

后续步骤