彈性 VM 是 Dataproc 的一項功能,可讓您在建立 Dataproc 叢集時,為 Dataproc次要工作站指定VM 類型的優先順序清單。
為何要使用彈性 VM
先前提交叢集建立要求時,如果 VM 類型無法使用,要求就會失敗,您必須更新要求、指令碼或程式碼,指定「次佳」VM 類型。這個重新要求程序可能需要多次迭代,直到您指定可用的 VM 類型為止。
Dataproc 彈性 VM 功能會從排序的 VM 清單中選取次要工作站 VM 類型,然後在指定的叢集區域中搜尋列出的 VM 類型可用的區域,協助您順利建立叢集。
術語
虛擬機器類型: 虛擬機器執行個體的系列、記憶體容量和 CPU 核心數。 Dataproc 支援使用預先定義和自訂 VM 類型。
次要工作站:次要工作站不會儲存資料,這些節點僅做為處理節點,您可以運用次要工作站擴充運算資源,不必擴充儲存空間。
限制和注意事項
Dataproc on Compute Engine
2.0.74+
,2.1.22+
以上版本的 Dataproc on Compute Engine 映像檔版本,都支援彈性 VM。您只能為次要工作站指定彈性 VM。
您最多可以指定五個已排序的 VM 類型清單,每個清單最多可包含 10 個 VM 類型。詳情請參閱「如何要求彈性 VM」。
如要使用彈性 VM 建立叢集,必須使用 Dataproc 自動選擇區域位置,讓 Dataproc 選擇有容量可滿足 VM 類型要求的區域。
如果叢集建立要求包含自動調度資源政策,彈性 VM 可以來自不同 VM 系列,但必須具有相同數量的記憶體和核心數。
佈建彈性 VM 時,Dataproc 會使用「任何相符」的可用預留項目,但不會使用「特定」預留項目 (請參閱「使用預留執行個體」)。系統會先選取符合預留項目的機器類型,然後選取 CPU 數量最多的 VM 類型。
雖然您可以為叢集中的主要和次要工作站 V 類型指定不同的 CPU 與記憶體比率,但這可能會導致效能下降,因為系統會將最小的 CPU 與記憶體比率做為最小的容器單元。
如果您更新使用彈性 VM 建立的叢集,Dataproc 會從您建立叢集時提供的彈性 VM 清單中選取並新增工作站。
要求彈性 VM
使用 Google Cloud 控制台、Google Cloud CLI 或 Dataproc API 建立 Dataproc 叢集時,可以指定彈性 VM。
- 您最多可以指定五個已排序的 VM 類型清單,每個清單最多可包含 10 個 VM 類型。排名最低的清單優先順序最高。根據預設,彈性 VM 清單的等級為 0。在清單中,Dataproc 會優先使用有未用預留項目的 VM 類型,其次是最大的 VM 大小。清單中 CPU 數量相同的 VM 類型會受到同等對待。
控制台
如要建立具有次要工作站彈性 VM 的叢集,請執行下列指令:
在 Google Cloud 控制台中,開啟 Dataproc 的「Create a cluster on Compute Engine」(在 Compute Engine 上建立叢集) 頁面。
系統會選取「設定叢集」面板,並在欄位中填入預設值。您可以變更建議的名稱和叢集區域,以及進行其他變更。請務必選取「Any」(任何) 做為叢集區域,允許 Dataproc 自動選擇區域位置選擇 VM 類型可用性最佳的區域,這些 VM 類型會列在彈性 VM 清單中。
選取「設定節點」面板。在「次要工作站節點」部分,指定次要工作站的數量和先占性。
- 針對每個次要工作站等級,按一下「新增次要工作站」,並指定要納入每個等級的一或多個機器類型。
在叢集建立面板中確認並指定叢集詳細資料後,按一下「建立」。
gcloud
使用 gcloud dataproc clusters create
指令新增多個 secondary-worker-machine-types
旗標,為 Dataproc 次要工作站指定已排序的彈性 VM 清單。彈性 VM 的預設次要工作站類型為 Spot,屬於先占類型。
在下列 gcloud CLI 範例中,Dataproc 會先嘗試使用 n2-standard-8
VM 佈建次要工作站 (等級 0)。如果 n2-standard-8 機器無法使用,Dataproc 會嘗試使用 e2-standard-8
或 t2d-standard-8
VM (等級 1) 佈建次要工作站。
gcloud dataproc clusters create CLUSTER_NAME \ --region=REGION \ --zone="" \ --master-machine-type=n1-standard-8 \ --worker-machine-type=n1-standard-8 \ --num-workers=4 \ --num-secondary-workers=4 \ --secondary-worker-type=non-preemptible \ --secondary-worker-machine-types="type=n2-standard-8,rank=0" \ --secondary-worker-machine-types="type=e2-standard-8,type=t2d-standard-8,rank=1"
注意:
--zone=""
:彈性 VM 功能需要Dataproc 自動選擇區域位置,Dataproc 才能選擇可用的 VM 類型。將空值 ("") 傳遞至--zone
旗標,即可覆寫預設gcloud config list
中指定的任何區域選取項目。Dataproc 會根據機器核心和記憶體產生元件
role
屬性。您可以使用--properties
旗標覆寫這些系統產生的屬性,語法如下:--properties="ROLE:MACHINE_TYPE:COMPONENT_PREFIX:COMPONENT_PROPERTY=VALUE"
系統僅支援
secondary_worker
角色。在下列範例中,
--properties
旗標會將指派給次要工作站節點的e2-standard-8
機器核心數量從8
變更為6
:--properties="secondary_worker:e2-standard-8:yarn:yarn.nodemanager.resource.cpu-vcores=6"
API
在 Dataproc API clusters.create
instanceFlexibilityPolicy.instanceSelectionList
要求中,指定次要工作站的 machineTypes 排名清單。
範例:
下列 Dataproc clusters.create
要求主體 中的 JSON 程式碼片段,指定等級 0 和等級 1 的次要工作站機器類型。
"config": { "secondaryWorkerConfig": { "instanceFlexibilityPolicy": { "instanceSelectionList": [ { "machineTypes": [ "n1-standard-4", "n2-standard-4" ], "rank": 0 }, { "machineTypes": [ "e2-standard-4", "n2d-standard-4" ], "rank": 1 } ] } } }
使用叢集屬性自訂元件角色:Dataproc 會根據 VM 核心和記憶體產生元件 role
屬性。如要覆寫系統產生的這些屬性,請使用下列 key=value
語法,將 SoftwareConfig.properties
新增至 clusters.create
要求:
ROLE:MACHINE_TYPE:COMPONENT_PREFIX:COMPONENT_PROPERTY=VALUE
系統僅支援 secondary_worker
角色。
在下列範例中,properties
欄位會將指派給 e2-standard-8
VM 次要工作站節點的核心數量從 8
變更為 6
:
"secondary_worker:e2-standard-8:yarn:yarn.nodemanager.resource.cpu-vcores=6"