本文件說明如何建立 Managed Service for Apache Spark 多可用區叢集。在多可用區叢集中,Managed Service for Apache Spark 會在單一區域的多個可用區中,佈建及分配叢集的 Compute Engine VM 執行個體,而非將所有叢集節點放在單一可用區。
如需建立或擴充大型叢集,且單一可用區的容量可能不足以滿足要求,請使用多可用區叢集。
多區域叢集的運作方式
建立多可用區叢集時,Managed Service for Apache Spark 會按照下列方式佈建叢集節點:
- 主要節點:Managed Service for Apache Spark 會使用自動選擇可用區位置,將主要執行個體群組放在叢集區域中的單一可用區。
- worker 節點:Managed Service for Apache Spark 會將主要和次要 worker 群組,設定為區域性代管執行個體群組 (MIG)。這些群組會在區域內任何有可用容量的合格可用區中,佈建及分配 worker VM。
由於 Managed Service for Apache Spark 會將 worker VM 要求分散到多個可用區,因此單一可用區的容量限制較不可能阻擋您的要求。建立或擴充大型叢集、含有 Spot VM 或先占次要 worker 的叢集,或使用高需求機型的叢集時,這項設定有助於避免 ZONE_RESOURCE_POOL_EXHAUSTED 錯誤。
需求條件和限制
如要建立多可用區叢集,您必須使用下列其中一個映像檔版本,或相同映像檔版本系列中的較新版本:
| 映像檔版本測試群組 | 最低支援映像檔版本 |
|---|---|
| 2.2.x | 2.2.88 |
| 2.3.x | 2.3.37 |
| 3.0.x | 3.0.3 |
多可用區叢集有下列限制:
- 在同一個叢集建立要求中,您無法同時指定單一可用區和多可用區設定。
- 在初始叢集建立要求中,您無法建立主要 worker 超過 1,000 個的多可用區叢集。如果工作負載需要超過 1,000 個主要 worker,請建立主要 worker 數量不超過 1,000 個的叢集,並在建立後調整叢集資源。
網路資料移轉費用
在單一可用區叢集中,所有 VM 都位於同一個可用區,且在同一可用區內使用內部 IP 位址的 VM 之間傳輸網路流量,不需支付任何費用。在多可用區叢集中,主要和 worker VM 可以位於相同區域的不同可用區。在同一區域內不同可用區的 VM 之間傳輸網路流量,會產生可用區間資料移轉費用。
如要瞭解定價詳情,請參閱「 Google Cloud內部 VM 之間的資料移轉定價」。
建立多可用區叢集
您可以使用 Google Cloud CLI 或 Dataproc API 建立多可用區叢集。
gcloud
如要建立多可用區叢集,請執行 gcloud dataproc clusters create 指令並加上 --multizone 旗標。請勿指定 --zone 旗標。
gcloud dataproc clusters create CLUSTER_NAME \
--region=REGION \
--multizone \
--image-version=IMAGE_VERSION \
--master-machine-type=MASTER_MACHINE_TYPE \
--worker-machine-type=WORKER_MACHINE_TYPE \
--num-workers=NUM_WORKERS
更改下列內容:
- CLUSTER_NAME:叢集名稱。
- REGION:叢集可用的 Compute Engine 區域,例如
us-central1。 - IMAGE_VERSION:支援多可用區叢集的映像檔版本,例如
2.3.37-debian12。詳情請參閱「需求條件和限制」。 - MASTER_MACHINE_TYPE:主要節點的 Compute Engine 機器類型,例如
n2-standard-4。 - WORKER_MACHINE_TYPE:主要 worker 節點的 Compute Engine 機器類型,例如
n2-standard-4。 - NUM_WORKERS:叢集中的主要 worker 數量。這個值不得大於
1000。
REST
如要建立多可用區叢集,請傳送 clusters.create 要求。在要求的 gceClusterConfig 物件中,將 zoneUri 欄位留空,並將 multiZoneConfig.targetShape 欄位設為 ANY。
HTTP 方法和網址:
POST https://dataproc.googleapis.com/v1/projects/PROJECT_ID/regions/REGION/clusters
JSON 要求主體:
{
"projectId": "PROJECT_ID",
"clusterName": "CLUSTER_NAME",
"config": {
"gceClusterConfig": {
"multiZoneConfig": {
"targetShape": "ANY"
}
},
"softwareConfig": {
"imageVersion": "IMAGE_VERSION"
},
"masterConfig": {
"numInstances": 1,
"machineTypeUri": "MASTER_MACHINE_TYPE"
},
"workerConfig": {
"numInstances": NUM_WORKERS,
"machineTypeUri": "WORKER_MACHINE_TYPE"
}
}
}
更改下列內容:
- PROJECT_ID:您的 Google Cloud 專案 ID。
- REGION:叢集可用的 Compute Engine 區域,例如
us-central1。 - CLUSTER_NAME:叢集名稱。
- IMAGE_VERSION:支援多可用區叢集的映像檔版本,例如
2.3.37-debian12。詳情請參閱「需求條件和限制」。 - MASTER_MACHINE_TYPE:主要節點的 Compute Engine 機器類型,例如
n2-standard-4。 - NUM_WORKERS:叢集中的主要 worker 數量。這個值不得大於
1000。 - WORKER_MACHINE_TYPE:主要 worker 節點的 Compute Engine 機器類型,例如
n2-standard-4。
後續步驟
- 進一步瞭解自動選擇可用區位置功能。
- 瞭解如何擴充 Managed Service for Apache Spark 叢集。
- 瞭解區域性 MIG 目標分配型態。