盡可能提高叢集和工作的彈性與效率

本頁面提供最佳做法和排程策略,協助您設計彈性的 Managed Service for Apache Spark 叢集,盡可能提高 Cloud de Confiance by S3NS 區域的資源取得率、減少佈建延遲,並充分發揮效能和成本最佳化。

資源取得能力總覽

在固定的 Managed Service for Apache Spark 叢集執行工作,會產生單點故障,可能導致工作中斷,以及叢集和工作因局部無法使用或佈建延遲而失敗。

如果叢集設定了下列任何一種僵化的反模式,資源無法使用的風險就會很高:

  • 固定可用區位置:使用 zone 旗標或欄位硬式編碼單一可用區,而非允許 Managed Service for Apache Spark AutoZone 動態將叢集置於最佳可用區。這種反模式會導致叢集建立作業無法使用鄰近可用區的運算資源。
  • 每個節點角色使用單一機型或世代:將節點角色限制為單一機器世代或類型。這種反模式會導致叢集無法改用替代方案。
  • 最高優先順序的機器家族太少:在彈性 VM 政策的優先順序 0 中,只列出一或兩個機器家族,即使已定義備用優先順序也一樣。這種反模式會縮減 Managed Service for Apache Spark 可優先運用的資源集區,提高退回較低排名或佈建延遲的可能性。
  • 垂直資源調度,使用較少的大型 VM:垂直調度叢集資源,依賴少量的大型 VM 形狀。這種反面模式會限制排程彈性。
  • 全有或全無叢集建立作業:要求同時佈建所有 worker 節點,而非使用部分叢集建立作業搭配自動調度資源。如果因資源暫時無法使用而無法分配 worker 節點,這個反模式會導致叢集建立失敗。
  • 排程尖峰:在用量高峰時段觸發大型批次管道,導致區域競爭加劇。

資源取得能力是指設計工作時,確保硬體彈性、多可用區和可擴充性。只要將叢集與固定設定解耦,並啟用多機器家族備用機制,就能提高建立成功率、盡可能縮短啟動延遲時間,並持續達成服務水準協議。

資源取得建議

請採用下列最佳化措施,提高資源可用性和工作穩定性:

使用彈性 VM

彈性 VM 功能可讓您為主要執行個體、主要和次要 worker 節點指定 VM 類型排名清單。這項功能會評估列出的 VM 類型,並自動選取有可用容量的可用區,提高建立成功率。

建議:使用彈性 VM 並覆寫磁碟,即可在同一個叢集政策中,為不同的候選機器家族指定不同的磁碟類型,例如 Hyperdisk 和永久磁碟。您也可以在單一政策中混合使用 Gen2 和 Gen4 機器家族,在更廣泛的集區中擴充工作,並略過容量限制。

在排名 0 指定至少三個不同的機器家族。 Managed Service for Apache Spark 會先從優先順序最高 (排名 0) 的清單中選取,因此排名 0 的範圍越廣,叢集建立作業在降至較低排名之前,可用的候選資源集區就越大。在排名 0 結合第 4 代和第 2 代系列,是擴大這個集區最有效的方法。

針對一般用途工作負載 (例如目前在 N2 或 N2D 機器上執行的工作),請使用下列排名:

  • 等級 0:N4、N4D (搭配 Hyperdisk Balanced)、N2、N2D
  • 第 1 級:C4、C4D (搭配 Hyperdisk Balanced)、C2D。本機 SSD 可與 C4 和 C4D 搭配使用,但 8 或 16 個核心通常僅支援 1 至 2 個本機 SSD。
  • 第 2 級:E2 (效能較低,僅在必要時使用)

舉例來說,使用 n2d-standard-16 的工作排名如下:

  • 排名 0: n4-standard-16、n4d-standard-16、n2-standard-16、n2d-standard-16
  • 第 1 名: c4-standard-16、c4d-standard-16、c2d-standard-16
  • 排名 2: e2-standard-16

由於 N4 和 N4D 需要 Hyperdisk,而 N2 和 N2D 使用永久磁碟,因此請將排名 0 定義為兩個執行個體選項,這兩個選項共用相同的排名,但使用不同的 diskConfig 值。舉例來說,下列 gcloud dataproc clusters create 旗標會定義上述範例的主要 worker 政策:

gcloud dataproc clusters create CLUSTER_NAME \
    --region=REGION \
    --zone="" \
    --num-workers=NUM_WORKERS \
    --worker-instance-selection='{"machineTypes":["n4-standard-16","n4d-standard-16"],"rank":0,"diskConfig":{"bootDiskType":"hyperdisk-balanced","bootDiskSizeGb":BOOT_DISK_SIZE_GB}}' \
    --worker-instance-selection='{"machineTypes":["n2-standard-16","n2d-standard-16"],"rank":0,"diskConfig":{"bootDiskType":"pd-balanced","bootDiskSizeGb":BOOT_DISK_SIZE_GB}}' \
    --worker-instance-selection='{"machineTypes":["c4-standard-16","c4d-standard-16"],"rank":1,"diskConfig":{"bootDiskType":"hyperdisk-balanced","bootDiskSizeGb":BOOT_DISK_SIZE_GB}}' \
    --worker-instance-selection='{"machineTypes":["c2d-standard-16"],"rank":1,"diskConfig":{"bootDiskType":"pd-balanced","bootDiskSizeGb":BOOT_DISK_SIZE_GB}}' \
    --worker-instance-selection='{"machineTypes":["e2-standard-16"],"rank":2,"diskConfig":{"bootDiskType":"pd-balanced","bootDiskSizeGb":BOOT_DISK_SIZE_GB}}'

使用彈性 VM 時,請考量下列因素:

  • 混合磁碟類型支援:Gen3 和 Gen4 機型僅支援 Hyperdisk 磁碟類型,不支援永久磁碟類型。混合使用 Gen2 和 Gen4 時,請在 instanceFlexibilityPolicy 中為每個執行個體選取項目指定 diskConfig。詳情請參閱「磁碟覆寫」。

  • 資源配額:定義具有備用類型的彈性 VM 政策時,Compute Engine 會檢查區域中所有候選類型和磁碟的配額。請確認專案有足夠的運算和磁碟配額,可分配給所有設定的項目。

  • Compute Engine 折扣:善用彈性承諾使用折扣 (CUD),在多個 VM 系列和區域中,套用依支出計算的節省方案。

  • 定價:使用 Cloud de Confiance Pricing Calculator 比較政策中各等級的費用。

如需設定範本和部署範例,請參閱:

使用自動選擇可用區位置功能

使用 AutoZone 放置,讓 Managed Service for Apache Spark 選取最佳可用區來佈建資源。如果您使用自訂虛擬私有雲 (VPC) 網路,請確保子網路在所有區域性可用區中都有足夠的 IP 位址。

使用較小的機器型態

設計工作時,請橫向擴充至較小的機器類型 (4、8 或 16 核心),而非垂直擴充至較大的 VM。較小的 VM 尺寸在各可用區的可用性較高,有助於避免建立延遲。

  • 檢查並重新架構使用大型機型做為 driver 節點的工作。
  • 查看僅執行 driver 節點,不含 worker 節點的工作 (單一節點叢集)。在單一節點叢集上執行的工作無法動態擴充,且會繫結至單一實體主機。

使用叢集自動調度資源

使用叢集自動調度資源功能,並設定足夠的執行個體數量上限,以便管理資源變動 (尖峰) 的工作容量。

使用部分叢集建立作業搭配自動調度資源

使用部分叢集建立功能,指定主要 worker 數量下限,並啟用自動調度資源。如果叢集啟動時的工作站數量少於要求數量,自動調度資源功能會在資源可用時動態新增更多工作站。

在離峰時段排定工作

在離峰時段 (例如中午和週末) 安排工作。請在非標準時間 (例如 10:07,而非 10:00) 安排時間表,以免排程高峰。

後續步驟