建立高可用性叢集

本文件說明如何建立高可用性 (HO) 模式的 Managed Service for Apache Spark 叢集。在高可用性模式下,Managed Service for Apache Spark 可從一系列相容的機型中選取,而非在建立叢集時要求固定機型,因此在需求量大或資源受限的期間,成功佈建叢集 VM 的可能性會提高。

使用高可用性模式建立具有一般用途運算需求的叢集,有助於避免因 VM 無法使用而導致叢集建立和資源調度失敗。

高取得性模式的運作方式

在標準叢集建立要求中,您會為叢集節點指定特定機型 (例如 n2-standard-4)。如果可用區中沒有該特定機器類型,建立要求就會失敗。

在「高可用性」模式中,您可以為主要、主要 worker 和次要 worker 節點指定彈性資源需求,而非固定機型:

  • vCPU 核心數:您可以要求每個 VM 執行個體的目標 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 個執行個體。
    • 主要 worker:正整數。
    • 次要 worker:非負整數。
  • 開機磁碟大小:選用的開機磁碟大小 (例如 100 GB)。

Managed Service for Apache Spark 會自動使用自動選擇可用區位置功能,評估叢集區域中的可用區,並在要求的硬體類別中,選取有可用容量的候選機型。

需求條件和限制

高取得性模式有下列規定和限制:

  • 資源配額:在叢集區域中,專案必須有足夠的 Compute Engine 資源配額,可供所選硬體類別 (N4、N4D、N2、N2D、C4 和 C4D) 中的所有候選機器家族使用。由於基礎候選機器類型是由 Google 控制,且隨時可能變更,因此請勿依賴特定機器類型。
  • 可用區規格:您無法明確指定 --zone (或 zoneUri)。Managed Service for Apache Spark 會使用自動選擇可用區功能,自動選取區域中的可用區。
  • 與固定機器和節點設定互斥:
    • 使用彈性設定 (--master-flexible-config、--worker-flexible-config 或 --secondary-worker-flexible-config) 設定主要、主要 worker 或次要 worker 節點群組時,您無法為這些節點群組指定標準機型、執行個體選取、執行個體數量、磁碟或加速器旗標:
      • 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 搭配使用。
      • 主要 worker:無法與 --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 搭配使用。
      • 次要 worker:無法與 --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 節點群組也必須使用彈性設定 (--worker-flexible-config)。
    • 如果高可用性叢集使用次要 worker,則必須使用 --secondary-worker-flexible-config,而非標準次要 worker 旗標。
  • 單一節點叢集:在單一節點叢集 (--single-node 或 --cluster-type=single-node) 中,只能指定 --master-flexible-config。不支援主要和次要 worker 的彈性設定旗標。
  • 叢集更新:您可以使用 gcloud dataproc clusters update 更新主要和次要 worker 的執行個體數量 (num-instances)。核心數量、硬體類別和開機磁碟大小是建立時的規格,建立後即無法修改。
  • 高可用性叢集:高可用性 (HA) 叢集 (具有三個主要節點的叢集) 不支援高可用性模式。主要執行個體數量必須為 1。

建立高可用性叢集

您可以使用 Google Cloud CLI 或 Dataproc API,在「高可用性」模式下建立叢集。

gcloud

如要以高可用性模式建立叢集,請執行 gcloud dataproc clusters create 指令,並加上 --master-flexible-config 和 --worker-flexible-config 旗標。

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:每個 VM 執行個體的 vCPU 數量。必須是 2 的次方 (2、4、8、16 或 32)。
  • HARDWARE_CLASS:硬體設定檔類別,可以是 STANDARD 或 PERFORMANCE。
  • NUM_WORKERS:叢集中的主要 worker 節點數量。
  • BOOT_DISK_SIZE:開機磁碟的大小,例如 100GB。

新增次要 worker

如要在高可用性模式中新增次要 worker 節點,請加入 --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"

建立單一節點叢集

如要建立單一節點高可用性叢集,請使用 --master-flexible-config 指定 --single-node (或 --cluster-type=single-node),並省略 worker 彈性設定旗標:

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

更新叢集 worker 數量

如要調整現有高可用性叢集的主要或次要 worker 數量,請使用 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:叢集名稱。

選用:如要新增次要 worker,請加入 secondaryWorkerFlexibleConfig 物件,並指定所需的 numInstances、coreCount、hardwareClass 和 bootDiskSizeGb。

後續步驟