Dataproc 彈性 VM

彈性 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 的叢集:

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

  2. 選取「設定叢集」面板,並在欄位中填入預設值。您可以變更建議名稱和叢集區域,以及進行其他變更。請務必選取「任一」做為叢集的區域,讓 Dataproc 自動選擇區域位置 選擇可用區,以便在彈性 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="":如要使用彈性虛擬機器功能,您必須啟用 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"