柔性虚拟机是一项 Dataproc 功能 Dataproc 的虚拟机类型优先级列表 辅助工作器 创建 Dataproc 集群。
为什么要使用灵活的虚拟机?
以前,如果您在提交集群创建请求时某种虚拟机类型不可用,该请求就会失败,您需要更新请求、脚本或代码,以指定“次优”虚拟机类型。这个 重新请求过程可能会涉及多次迭代,直到您指定了虚拟机类型 可用。
Dataproc 灵活虚拟机功能可帮助您创建集群 从已排名的虚拟机列表中选择辅助工作器虚拟机类型,然后搜索 。
术语
虚拟机类型: 虚拟机实例的系列、内存容量和 CPU 核心数。 Dataproc 支持使用预定义和自定义虚拟机类型。
辅助工作器: 辅助工作器 不存储数据。仅用来处理节点。您可以使用 辅助工作器在不伸缩存储空间的情况下伸缩计算资源。
限制和注意事项
灵活虚拟机适用于 Dataproc on Compute Engine
2.0.74+
、2.1.22+
及更高版本的 Dataproc on Compute Engine 映像版本。在预览版期间:
- 您只能为辅助工作器指定灵活虚拟机。
- 您可以指定 Spot 或非抢占式 在集群创建请求中将辅助工作器类型指定为灵活虚拟机,但两者不能同时如此。如果 则未指定辅助工作器类型,Dataproc 将使用抢占式的 Spot 虚拟机。
您最多可以指定 5 个排名虚拟机类型列表,每个列表中最多包含 10 种虚拟机类型。如需了解详情,请参阅如何请求灵活虚拟机。
创建具有灵活虚拟机的集群需要使用 Dataproc 自动选择可用区 让 Dataproc 选择 虚拟机类型请求
如果您的集群创建请求包含 自动扩缩政策 灵活虚拟机可以属于不同的虚拟机系列,但它们必须具有相同的 内存量和核心数
在预配灵活虚拟机时,Dataproc 将“任何匹配的”数据 可预订,但不是“具体”预留(请参阅 使用预留实例)。 与预留匹配的机器类型首先按等级进行选择,其次 CPU 数量最多的虚拟机类型。
尽管您可以为主数据库和虚拟机 辅助工作器 V 类型,这可能会导致性能下降 因为最小的 CPU 与内存比率用作最小的容器单元。
如果您更新使用灵活虚拟机创建的集群, Dataproc 从灵活的虚拟机列表中选择和添加工作器, 您在创建集群时提供的凭据
如何申请灵活虚拟机
在使用 Google Cloud 控制台、Google Cloud CLI 或 Dataproc API 创建 Dataproc 集群时,您可以指定灵活虚拟机。
- 您最多可以指定 5 个排名虚拟机类型列表,每个列表中最多包含 10 种虚拟机类型。排名最低的列表具有最高的优先级。默认情况下,灵活的 虚拟机列表的排名为 0。在列表中,Dataproc 会优先分配有未使用的预留的虚拟机类型,其次是虚拟机大小最大的虚拟机类型。列表中具有相同 CPU 数量的虚拟机类型会被平等对待。
控制台
如需创建具有辅助工作器柔性环境虚拟机的集群,请执行以下操作:
打开 Google Cloud 控制台中的 Dataproc 在 Compute Engine 上创建集群页面。
已选择设置集群面板,且字段已填充默认值 值。您可以更改建议的名称和集群区域,然后 进行其他更改。确保选择任意作为集群 要允许的可用区 Dataproc 自动选择可用区 选择具有最佳可用性的可用区 您的灵活虚拟机列表中指定的虚拟机类型。
选择配置节点面板。在辅助工作器节点 部分指定辅助工作器的数量和可抢占性。
- 针对每个辅助工作器等级,点击添加辅助工作器,指定要包含在每个等级中的一种或多种机器类型。
在集群创建面板中确认并指定集群详细信息后,点击创建。
gcloud
使用
gcloud dataproc clusters create
命令来添加多个 secondary-worker-machine-types
标志以指定排名
灵活的虚拟机列表
Dataproc 辅助工作器。
默认的灵活虚拟机辅助工作器类型为 Spot,这是一种抢占式类型。
在以下 gcloud CLI 示例中,Dataproc 尝试
先为辅助工作器预配 n2-standard-8
个虚拟机(等级为 0)。如果
n2-standard-8 机器不可用,Dataproc 尝试
使用 e2-standard-8
或 t2d-standard-8
预配辅助工作器
虚拟机(排名 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
在 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
根据虚拟机核心和内存生成组件 role
属性。
您可以使用以下 key=value
语法将 SoftwareConfig.properties
添加到 clusters.create
请求,以替换这些系统生成的属性:
ROLE:MACHINE_TYPE:COMPONENT_PREFIX:COMPONENT_PROPERTY=VALUE
在预览版中,secondary_worker
角色是唯一受支持的角色。
在以下示例中,properties
字段将分配给 e2-standard-8
虚拟机的辅助工作器节点的核心数量从 8
更改为 6
:
"secondary_worker:e2-standard-8:yarn:yarn.nodemanager.resource.cpu-vcores=6"