Dataproc 灵活虚拟机

柔性虚拟机是一项 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 数量最多的虚拟机类型。

  • Dataproc 会对灵活的虚拟机预配应用 Google Cloud 配额

  • 尽管您可以为主数据库和虚拟机 辅助工作器 V 类型,这可能会导致性能下降 因为最小的 CPU 与内存比率用作最小的容器单元。

  • 如果您更新使用灵活虚拟机创建的集群, Dataproc 从灵活的虚拟机列表中选择和添加工作器, 您在创建集群时提供的凭据

如何申请灵活虚拟机

在使用 Google Cloud 控制台、Google Cloud CLI 或 Dataproc API 创建 Dataproc 集群时,您可以指定灵活虚拟机。

  • 您最多可以指定 5 个排名虚拟机类型列表,每个列表中最多包含 10 种虚拟机类型。排名最低的列表具有最高的优先级。默认情况下,灵活的 虚拟机列表的排名为 0。在列表中,Dataproc 会优先分配有未使用的预留的虚拟机类型,其次是虚拟机大小最大的虚拟机类型。列表中具有相同 CPU 数量的虚拟机类型会被平等对待。

控制台

如需创建具有辅助工作器柔性环境虚拟机的集群,请执行以下操作:

  1. 打开 Google Cloud 控制台中的 Dataproc 在 Compute Engine 上创建集群页面。

  2. 已选择设置集群面板,且字段已填充默认值 值。您可以更改建议的名称和集群区域,然后 进行其他更改。确保选择任意作为集群 要允许的可用区 Dataproc 自动选择可用区 选择具有最佳可用性的可用区 您的灵活虚拟机列表中指定的虚拟机类型。

  3. 选择配置节点面板。在辅助工作器节点 部分指定辅助工作器的数量和可抢占性。

    • 针对每个辅助工作器等级,点击添加辅助工作器,指定要包含在每个等级中的一种或多种机器类型。
  4. 在集群创建面板中确认并指定集群详细信息后,点击创建

gcloud

使用 gcloud dataproc clusters create 命令来添加多个 secondary-worker-machine-types 标志以指定排名 灵活的虚拟机列表 Dataproc 辅助工作器。 默认的灵活虚拟机辅助工作器类型为 Spot,这是一种抢占式类型。

在以下 gcloud CLI 示例中,Dataproc 尝试 先为辅助工作器预配 n2-standard-8 个虚拟机(等级为 0)。如果 n2-standard-8 机器不可用,Dataproc 尝试 使用 e2-standard-8t2d-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"