彈性 VM 是 Dataproc 的功能,可讓您在建立 Dataproc 叢集時,為 Dataproc 次要工作站指定VM 類型的優先順序清單。
為何要使用彈性 VM?
先前,如果您在提交叢集建立要求時無法使用某種 VM 類型,要求就會失敗,您必須更新要求、指令碼或程式碼,指定「次佳」的 VM 類型。這個重新要求程序可能會重複執行多次,直到您指定可用的 VM 類型為止。
Dataproc 彈性 VM 功能會從排名 VM 清單中選取次要工作站 VM 類型,然後在指定叢集區域中搜尋可用且列出 VM 類型的區域,以便叢集建立要求順利完成。
術語
VM 類型:VM 執行個體的系列、記憶體容量和 CPU 核心數。Dataproc 支援使用預先定義和自訂 VM 類型。
次要工作站:次要工作站不會儲存資料。只能做為處理節點。您可以使用次要 worker 來擴充運算,而不需要擴充儲存空間。
限制和注意事項
彈性 VM 適用於 Dataproc on Compute Engine
2.0.74+
、2.1.22+
和更新版本的 Dataproc on Compute Engine 映像檔版本。您只能為次要工作站指定彈性 VM。
您最多可以指定五個排序的 VM 類型清單,每個清單最多包含 10 個 VM 類型。詳情請參閱「如何申請彈性 VM」。
如要建立含有彈性 VM 的叢集,您必須使用 Dataproc 自動選擇區域位置,讓 Dataproc 選擇可滿足 VM 類型要求的區域。
如果叢集建立要求包含自動調度資源政策,彈性 VM 可以來自不同的 VM 系列,但必須具有相同的記憶體量和核心數。
在佈建彈性 VM 時,Dataproc 會使用「任何相符」的可用保留項目,但不會使用「特定」保留項目 (請參閱「使用預留執行個體」)。系統會先在排名中選取符合預留項目的機器類型,接著選取 CPU 數量最多的 VM 類型。
Dataproc 會將 Google Cloud 配額套用至彈性 VM 配置。
雖然您可以在叢集中為主要和次要 worker V 類型指定不同的 CPU 與記憶體比率,但這可能會導致效能降低,因為系統會使用最小的 CPU 與記憶體比率做為最小的容器單位。
如果您更新使用彈性 VM 建立的叢集,Dataproc 會從您建立叢集時提供的彈性 VM 清單中選取並新增 worker。
如何申請彈性 VM
使用 Google Cloud 控制台、Google Cloud CLI 或 Dataproc API 建立 Dataproc 叢集時,您可以指定彈性 VM。
- 您最多可以指定五個排序的 VM 類型清單,每個清單最多包含 10 個 VM 類型。優先順序最高的清單排名最低。根據預設,彈性 VM 清單的排名為 0。在清單中,Dataproc 會優先使用未使用的預留 VM 類型,其次則是最大的 VM 大小。清單中 CPU 數量相同的 VM 類型會受到同等對待。
控制台
如要建立具有次要 worker 彈性 VM 的叢集:
在 Google Cloud 控制台中,開啟 Dataproc 的「Create a cluster on Compute Engine」(在 Compute Engine 上建立叢集) 頁面。
選取「設定叢集」面板,並在欄位中填入預設值。您可以變更建議名稱和叢集區域,以及進行其他變更。請務必選取「任一」做為叢集的區域,讓 Dataproc 自動選擇區域位置 選擇可用區,以便在彈性 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=""
:如要使用彈性虛擬機器功能,您必須啟用 Dataproc 自動選擇區域位置,讓 Dataproc 選擇可用於虛擬機器類型的區域。將空白值 (「""」) 傳遞至--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
請使用 instanceFlexibilityPolicy.instanceSelectionList
做為 Dataproc API clusters.create
要求的一部分,為次要工作站指定 machineTypes 的排名清單。
範例:
下列 JSON 程式碼片段擷取自 Dataproc clusters.create
要求主體,指定第 0 和第 1 級的次要 worker 機器類型。
"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"