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 控制台
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
... 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 控制台
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-arm、2.2-ubuntu22-arm和2.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 叢集,請執行下列操作:
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
注意:
REGION:叢集所在的區域。
如要瞭解可用於自訂叢集的其他指令列旗標,請參閱 gcloud dataproc clusters create 參考文件。
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"
}
}
}
後續步驟
- 進一步瞭解 Compute 上的 Arm VM。
- 瞭解如何使用自訂機型建立 VM。
- 瞭解如何建立及啟動 Compute Engine 執行個體。