Dataproc 灵活虚拟机

柔性虚拟机是一项 Dataproc 功能 Dataproc 的虚拟机类型优先级列表 辅助工作器 创建 Dataproc 集群

为什么要使用灵活虚拟机?

以前,如果在提交时某个虚拟机类型不可用 集群创建请求,请求失败,您需要更新 您的要求、脚本或代码来指定一个“次优”虚拟机类型。这个 重新请求过程可能会涉及多次迭代,直到您指定了虚拟机类型 可用。

Dataproc 灵活虚拟机功能可帮助您创建集群 从已排名的虚拟机列表中选择辅助工作器虚拟机类型,然后搜索 。

术语

  • 虚拟机类型: 虚拟机实例的系列、内存容量和 CPU 核心数。 Dataproc 支持使用 预定义和自定义虚拟机类型

  • 辅助工作器: 辅助工作器 不存储数据。它们仅用作处理节点。您可以使用 辅助工作器在不伸缩存储空间的情况下伸缩计算资源。

限制和注意事项

  • Dataproc on Compute Engine 2.0.74+ 提供灵活虚拟机, 在 Compute Engine 上使用 2.1.22+ 及更高版本的 Dataproc 映像版本

  • 在预览版期间:

    • 您只能为辅助工作器指定灵活虚拟机。
    • 您可以指定 Spot 或非抢占式 在集群创建请求中将辅助工作器类型指定为灵活虚拟机,但两者不能同时如此。如果 则未指定辅助工作器类型,Dataproc 将使用抢占式的 Spot 虚拟机。
  • 您最多可以指定 5 个按顺序排名的虚拟机类型列表,以及最多 10 个虚拟机类型 。如需了解详情,请参阅如何申请灵活虚拟机

  • 创建具有灵活虚拟机的集群需要使用 Dataproc 自动选择可用区 让 Dataproc 选择 虚拟机类型请求

  • 如果您的集群创建请求包含 自动扩缩政策, 灵活虚拟机可以属于不同的虚拟机系列,但它们必须具有相同的 内存量和核心数

  • 在预配灵活虚拟机时,Dataproc 将“任何匹配的”数据 可预订,但不是“具体”预留(请参阅 使用预留实例)。 与预留匹配的机器类型首先按等级进行选择,然后 CPU 数量最多的虚拟机类型。

  • Dataproc 采用 Google Cloud 配额 到灵活的虚拟机预配

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

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

如何请求灵活的虚拟机

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

  • 您最多可以指定 5 个按顺序排名的虚拟机类型列表,以及最多 10 个虚拟机类型 。排名最低的列表具有最高的优先级。默认情况下,灵活的 虚拟机列表的排名为 0。在列表中,Dataproc 会优先考虑 具有未使用预留的机器类型,其次是最大虚拟机大小。 同一列表中具有相同 CPU 数量的虚拟机类型会被视为同一类型。

控制台

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

  1. 打开 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 标志会更改核心数 从 86 向辅助工作器节点分配了 e2-standard-8 台机器:

    --properties="secondary_worker:e2-standard-8:yarn:yarn.nodemanager.resource.cpu-vcores=6"
    

API

使用 instanceFlexibilityPolicy.instanceSelectionList 作为 Dataproc API 的一部分 clusters.create 请求为辅助工作器指定按顺序排名的 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 属性。 您可以通过将 SoftwareConfig.properties 添加到 clusters.create 请求中,方法是使用以下 key=value 语法:

ROLE:MACHINE_TYPE:COMPONENT_PREFIX:COMPONENT_PROPERTY=VALUE

在预览版中,secondary_worker 角色是唯一受支持的角色。

在以下示例中,properties 字段会更改核心数 从 8 分配给 e2-standard-8 虚拟机的辅助工作器节点的 6

"secondary_worker:e2-standard-8:yarn:yarn.nodemanager.resource.cpu-vcores=6"