Managed Service for Apache Spark 集群是在 Compute Engine 实例上构建的。机器类型定义了实例可用的虚拟化硬件资源。Compute Engine 提供了预定义机器类型和自定义机器类型。Managed Service for Apache Spark 集群可以对主节点和工作器节点使用预定义类型和自定义类型。
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 机器类型,而应使用具有更高内存的机器类型)。
- 不支持共享核心机器类型,其中包括以下不受支持的机器类型:
- 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 实例将提供过多容量。借助自定义机器类型,您可以创建将主实例节点和/或工作器节点置于中间范围的 Managed Service for Apache Spark 集群(具有 6 个虚拟 CPU 和 25 GB 内存)。
指定自定义机器类型
自定义机器类型使用特殊的 machine type 规范,并且受限制的约束。例如,具有 6 个虚拟 CPU 和 22.5 GB 内存的自定义虚拟机的自定义机器类型规格为 custom-6-23040。
机器类型规范中的数字与机器中的虚拟 CPU (vCPU) 数量 (6) 和内存量 (23040) 对应。内存量是以 GB 为单位的内存量乘以 1024 来计算(请参阅以 GB 或 MB 表示内存)。在以下示例中,22.5 (GB) 乘以 1024:22.5 * 1024 = 23040。
您可以在创建集群时指定自定义机器类型。您可以在创建集群时为主节点或/或工作器节点设置机器类型。如果同时设置两者,则主实例节点可以使用与工作器节点不同的自定义机器类型。任何辅助工作器使用的机器类型设置以主要工作器的设置为准,不能单独进行设置(请参阅辅助工作器 - 抢占式虚拟机和非抢占式虚拟机)。
自定义机器类型价格
自定义机器类型价格基于自定义机器类型中使用的资源。 Managed Service for Apache Spark 价格会添加到计算资源的费用中,并基于集群中使用的虚拟 CPU (vCPU) 总数。
创建具有指定机器类型的集群
Google Cloud 控制台
gcloud CLI 命令
运行带有以下标志的 gcloud dataproc clusters create 命令,以创建使用主机器类型和/或工作器机器类型的 Managed Service for Apache Spark 集群:
--master-machine-type machine-type标志让您可设置集群中主虚拟机实例(如果创建高可用性集群,则为主实例)所用的预定义或自定义机器类型--worker-machine-type custom-machine-type标志让您可设置集群中工作器虚拟机实例所用的预定义或自定义机器类型
示例:
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
要通过具有扩展内存的自定义 CPU 的 gcloud 命令行创建集群,请向 ‑‑master-machine-type 和/或 ‑‑worker-machine-type 标志添加 -ext 后缀。
示例
以下 gcloud 命令行示例可创建一个 Managed Service for Apache Spark 集群,该集群的每个节点具有 1 个 CPU 和 50 GB 内存 (50 * 1024 = 51200):
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 clusters.create 请求的 <code.instancegroupconfig< code="" dir="ltr" translate="no"></code.instancegroupconfig<> 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 兼容的映像不支持许多可选组件和初始化操作组件,如映像发布版本页面中所述。 - 由于必须为集群指定一个映像,因此主节点、工作器节点和辅助工作器节点必须使用与所选 Managed Service for Apache Spark Arm 映像兼容的 Arm 机器类型。
- 与 ARM 机器类型不兼容的 Managed Service for Apache Spark 功能不可用(例如,C4A 机器类型不支持本地 SSD)。
- ARM 映像仅支持预安装的组件和有限的可选组件。不支持其他可选组件和所有初始化操作。
创建具有 ARM 机器类型的集群
控制台
如需创建使用 ARM 机器类型的 Managed Service for Apache Spark 集群,请执行以下操作:
- 打开 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 虚拟机。
- 了解如何创建自定义机器类型的虚拟机。
- 了解如何创建并启动 Compute Engine 实例。