支援的機型

Managed Service for Apache Spark 叢集是基於 Compute Engine 執行個體建構而成。機型定義了執行個體可用的虛擬化硬體資源。Compute Engine 提供預先定義機型自訂機型。Managed Service for Apache Spark 叢集可以在主要節點和 worker 節點中使用預先定義與自訂類型。

Managed Service for Apache Spark 叢集支援下列 Compute Engine 預先定義機型 (機型可用性因區域而異):

  • 一般用途機型,包括 N1、N2、N2D、E2、C3、C4、N4 和 N4D 機型 (Managed Service for Apache Spark 也支援 N1、N2、N2D、E2、N4 和 N4D 自訂機型)。

    限制:

    • 2.0 以上的映像檔不支援 n1-standard-1 機型 (對於 2.0 以下的映像檔,也不建議搭配使用 n1-standard-1 機型,請改用記憶體較高的機型)。
    • Cloud Composer 環境不支援共用核心機型,包括下列不支援的機型:
      • E2:e2-micro、e2-small 和 e2-medium 共用核心機型,以及
      • N1:f1-micro 和 g1-small 共用核心機型。
    • 如果機型為 C4、N4 或 N4D,Managed Service for Apache Spark 會選取 hyperdisk-balanced 做為開機磁碟類型。
  • 運算最佳化機型,包括 C2 和 C2D 機型。
  • 記憶體最佳化機型,包括 M1 和 M2 機型。
  • Arm 機型,包括 C4A 機型。

自訂機型

Managed Service for Apache Spark 支援 N1、N2、N2D、E2、N4 和 N4D 系列的自訂機型

自訂機型適合下列工作負載:

  • 不適合預先定義機型的工作負載。
  • 需要更多處理效能或記憶體,但不需要新一代機型所有升級功能的工作負載。

例如,假設您的工作負載需要的處理效能超過 n1-standard-4 執行個體所能提供的程度,但新一代 n1-standard-8 執行個體提供的效能又太多。透過自訂機型,即可使用中間範圍 (搭載 6 個虛擬 CPU 和 25 GB 的記憶體) 的主要節點及/或 worker 節點,來建立 Managed Service for Apache Spark 叢集。

指定自訂機型

自訂機型使用特殊 machine type 規格,並取決於相關限制條件。例如一台配置 6 個虛擬 CPU 及 22.5 GB 記憶體的自訂 VM,其自訂機型規格為 custom-6-23040

機型規格中的數值分別對應機器中的虛擬 CPU (vCPU) 數量 (6) 和記憶體容量 (23040)。記憶體容量的計算方式為:記憶體容量 (GB) 乘以 1024 (請參閱「以 GB 或 MB 表示記憶體容量」)。在本例中,容量的計算方式為 22.5 (GB) 乘以 1024:22.5 * 1024 = 23040

建立叢集時,您可以指定自訂機器類型。也可以在建立叢集時設定主要節點及/或 worker 節點的機型。如果兩者都設定,則主要節點與 worker 節點可分別使用不同的自訂機型。任何次要 worker 使用的機型都遵循主要 worker 的設定,無法個別進行設定 (請參閱「次要 worker - 先占與非先占 VM」)。

自訂機型定價

自訂機型定價取決於自訂機器所使用的資源。Managed Service for Apache Spark 定價外加於運算資源費用之上,並基於叢集所使用的虛擬 CPU (vCPU) 總數計算。

建立指定機型的叢集

Google Cloud 控制台

  • 開啟「Create cluster」(建立叢集) 頁面。
  • 在「Worker configuration」(工作人員設定) 中,選取機器家族、系列和類型。
  • 根據預設,驅動程式(主要) 節點設定與主要 worker 設定相同。 在「其他設定」下方,您可以編輯「driver 節點」,取消勾選「將 driver 節點預設為與主要 worker 相同」核取方塊,然後指定 driver 節點設定。
  • gcloud CLI 指令

    執行 gcloud dataproc clusters create 指令並搭配下列旗標,以建立具有主要執行個體和/或 worker 機型的 Managed Service for Apache Spark 叢集:

    • --master-machine-type machine-type 標記可用於設定叢集中主要 VM 執行個體使用的預先定義或自訂機型 (若建立高可用性叢集,則適用於多個主要執行個體)
    • --worker-machine-type custom-machine-type 標記可用於設定叢集中 worker VM 執行個體所使用的預先定義或自訂機型

    範例

    gcloud dataproc clusters create test-cluster /
        --master-machine-type custom-6-23040 /
        --worker-machine-type custom-6-23040 /
        other args
    
    Managed Service for Apache Spark 叢集啟動後,就會在終端機視窗中顯示叢集詳細資料。以下是顯示在終端機視窗中的部分叢集屬性清單範例:
    ...
    properties:
      distcp:mapreduce.map.java.opts: -Xmx1638m
      distcp:mapreduce.map.memory.mb: '2048'
      distcp:mapreduce.reduce.java.opts: -Xmx4915m
      distcp:mapreduce.reduce.memory.mb: '6144'
      mapred:mapreduce.map.cpu.vcores: '1'
      mapred:mapreduce.map.java.opts: -Xmx1638m
    ...
    

    API

    如要使用自訂機型建立叢集,請在 cluster.create API 請求的 masterConfig 和/或 workerConfig InstanceGroupConfig 中設定 machineTypeUri

    範例

    POST /v1/projects/my-project-id/regions/is-central1/clusters/
    {
      "projectId": "my-project-id",
      "clusterName": "test-cluster",
      "config": {
        "configBucket": "",
        "gceClusterConfig": {
          "subnetworkUri": "default",
          "zoneUri": "us-central1-a"
        },
        "masterConfig": {
          "numInstances": 1,
          "machineTypeUri": "n1-highmem-4",
          "diskConfig": {
            "bootDiskSizeGb": 500,
            "numLocalSsds": 0
          }
        },
        "workerConfig": {
          "numInstances": 2,
          "machineTypeUri": "n1-highmem-4",
          "diskConfig": {
            "bootDiskSizeGb": 500,
            "numLocalSsds": 0
          }
        }
      }
    }
    

    建立自訂機型搭配擴充記憶體的叢集

    Managed Service for Apache Spark 支援擴充記憶體超過每個 vCPU 6.5 GB 記憶體限制的自訂機型 (請參閱擴充記憶體定價)。

    Google Cloud 控制台

  • 開啟 Managed Service for Apache Spark 的「建立叢集」頁面。
  • 在「Worker configuration」(工作人員設定) 中,選取機器家族、系列和類型。
  • 根據預設,驅動程式 (主要) 節點設定與主要 worker 設定相同。 在「其他設定」下方,您可以編輯「driver 節點」,取消勾選「將 driver 節點預設為與主要 worker 相同」核取方塊,然後指定 driver 節點設定。
  • gcloud CLI

    如要在 gcloud 指令列建立自訂 CPU 搭配擴充記憶體的叢集,請在 ‑‑master-machine-type 及/或 ‑‑worker-machine-type 旗標中加入 -ext 後置字元。

    範例

    下列 gcloud 指令列範例會建立每個節點使用 1 個 CPU 和 50 GB 記憶體 (50 * 1024 = 51200) 的 Managed Service for Apache Spark 叢集:

    gcloud dataproc clusters create test-cluster /
        --master-machine-type custom-1-51200-ext /
        --worker-machine-type custom-1-51200-ext /
        other args
    

    API

    以下範例擷取自 Dataproc REST API 叢集建立請求中的 <code dir="ltr" translate="no">InstanceGroupConfig</code> JSON 程式碼片段,指定每節點配置 1 個 CPU 與 50 GB 記憶體(50 * 1024 = 51200):

    ...
        "masterConfig": {
          "numInstances": 1,
          "machineTypeUri": "custom-1-51200-ext",
        ...
        },
        "workerConfig": {
          "numInstances": 2,
          "machineTypeUri": "custom-1-51200-ext",
         ...
    ...
    

    Arm 機器類型

    Managed Service for Apache Spark 支援建立使用 Arm 機型 (例如 C4A 機型) 的叢集。

    需求和限制:

    • Managed Service for Apache Spark 映像檔必須與 Arm 晶片組相容。 Managed Service for Apache Spark 2.1-ubuntu20-arm2.2-ubuntu22-arm2.3-ubuntu22-arm (以及後續帶有 -arm 後置字串的版本) 映像檔與 Arm 晶片組相容。如映像檔發布版本頁面所述,ARM 相容映像檔不支援多款選用及初始化動作元件。
    • 由於每個叢集必須指定一個映像檔,因此主要節點、worker 節點和次要 worker 節點都必須使用與所選 Managed Service for Apache Spark Arm 映像檔相容的 Arm 機型。
    • 不相容於 Arm 機型的 Managed Service for Apache Spark 功能均無法使用 (例如 C4A 機型不支援本機 SSD)。
    • Arm 映像檔僅支援預先安裝的元件及限定的選用元件,不支援其他選用元件和所有初始化動作。

    使用 Arm 機型建立叢集

    控制台

    如要建立使用 Arm 機型的 Managed Service for Apache Spark 叢集,請執行下列操作:

    1. 開啟 Managed Service for Apache Spark 的「建立叢集」頁面。
    2. 在「Worker configuration」(工作人員設定) 中,選取機器家族、系列和類型。
    3. 根據預設,驅動程式 (主要) 節點設定與主要 worker 設定相同。 在「其他設定」下方,您可以編輯「driver 節點」,取消勾選「將 driver 節點預設為與主要 worker 相同」核取方塊,然後指定 driver 節點設定。

    gcloud

    如要建立使用 Arm 機型的 Managed Service for Apache Spark 叢集,請在本機的終端機視窗或在 Cloud Shell 中執行下列 gcloud 指令。這個範例會指定 2.1-ubuntu20-arm 映像檔和 c4a-standard-4 Arm 機型。

    gcloud dataproc clusters create cluster-name \
        --region=REGION \
        --image-version=2.1-ubuntu20-arm \
        --master-machine-type=c4a-standard-4 \
        --worker-machine-type=c4a-standard-4
    

    注意:

    API

    以下範例是 Dataproc REST API clusters.create 要求,用於建立使用 c4a-standard-4 Arm 機型的叢集。

    POST /v1/projects/my-project-id/regions/is-central1/clusters/
    {
      "projectId": "my-project-id",
      "clusterName": "sample-cluster",
      "config": {
        "configBucket": "",
        "gceClusterConfig": {
          "subnetworkUri": "default",
          "zoneUri": "us-central1-a"
        },
        "masterConfig": {
          "numInstances": 1,
          **"machineTypeUri": "c4a-standard-4"**,
          "diskConfig": {
            "bootDiskSizeGb": 500,
          }
        },
        "workerConfig": {
          "numInstances": 2,
          **"machineTypeUri": "c4a-standard-4"**,
          "diskConfig": {
            "bootDiskSizeGb": 500,
            "numLocalSsds": 0
          }
        },
        "softwareConfig": {
          "imageVersion": "2.1-ubuntu20-arm"
        }
      }
    }
    

    後續步驟