Dataproc 彈性 VM

彈性 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 類型。

  • Dataproc 會對彈性 VM 佈建套用配額 Google Cloud

  • 雖然您可以為叢集中的主要和次要工作站 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 的叢集,請執行下列指令:

  1. 在 Google Cloud 控制台中,開啟 Dataproc 的「Create a cluster on Compute Engine」(在 Compute Engine 上建立叢集) 頁面。

  2. 系統會選取「設定叢集」面板,並在欄位中填入預設值。您可以變更建議的名稱和叢集區域,以及進行其他變更。請務必選取「Any」(任何) 做為叢集區域,允許 Dataproc 自動選擇區域位置選擇 VM 類型可用性最佳的區域,這些 VM 類型會列在彈性 VM 清單中。

  3. 選取「設定節點」面板。在「次要工作站節點」部分,指定次要工作站的數量和先占性。

    • 針對每個次要工作站等級,按一下「新增次要工作站」,並指定要納入每個等級的一或多個機器類型。
  4. 在叢集建立面板中確認並指定叢集詳細資料後,按一下「建立」

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-8t2d-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"