本文件說明如何建立高可用性 (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搭配使用。
- Master:無法與
- 在多節點叢集中,如果主要節點群組啟用了高可用性模式,主要 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 物件中:
- 將
gceClusterConfig.zoneUri留空 (或省略),即可啟用自動選擇可用區。 - 指定
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。
後續步驟
- 進一步瞭解自動選擇可用區位置功能。
- 瞭解如何使用彈性 VM 優先採用 VM 類型。
- 瞭解如何擴充 Managed Service for Apache Spark 叢集。