了解节点分配策略和方案 - Amazon EMR
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

了解节点分配策略和方案

本节概述了可用于 EMR 托管扩展的节点分配策略和常见扩展方案。

节点分配策略

EMR 托管扩展基于以下纵向扩展和缩减策略分配核心和任务节点:

纵向扩展策略

  • EMR 托管扩展首先为核心节点添加容量,然后再为任务节点添加容量,直到达到允许的最大容量或直到实现所需的纵向扩展目标容量。

  • 如果设置了 MaximumCoreCapacityUnits 参数,则 Amazon EMR 会扩展核心节点,直到核心单元达到允许的最大限制。所有剩余容量都添加到任务节点。

  • 如果设置了 MaximumOnDemandCapacityUnits 参数,则 Amazon EMR 使用按需型实例扩展集群,直到按需单元达到允许的最大限制。使用 Spot 实例添加所有剩余容量。

  • 如果同时设置了 MaximumCoreCapacityUnitsMaximumOnDemandCapacityUnits 参数,Amazon EMR 在扩展期间会考虑这两个限制。

    例如,如果 MaximumCoreCapacityUnits 小于 MaximumOnDemandCapacityUnits,EMR 首先扩展核心节点,直到达到核心容量限制。对于剩余容量,EMR 首先使用按需型实例扩展任务节点,直到达到按需限制,然后对任务节点使用 Spot 实例。

缩减策略

  • EMR 托管扩展首先删除任务节点,然后删除核心节点,直到实现所需的缩减目标容量。集群永远不会缩减到低于托管扩展策略中的最小限制。

  • 在每个节点类型(核心节点或任务节点)中,EMR 托管扩展首先删除 Spot 实例,然后删除按需型实例。

如果集群没有任何负载,Amazon EMR 将取消在之前的前评估中添加的新实例,并执行缩减操作。如果集群负载过重,Amazon EMR 会取消删除实例并执行纵向扩展操作。

节点分配注意事项

我们建议您对核心节点使用按需购买选项,以避免在 Spot 回收时丢失 HDFS 数据。当更多 Spot 实例添加到任务节点时,您可以使用任务节点的 Spot 购买选项来降低成本并加快任务执行速度。

节点分配方案

您可以通过设置不同组合的最大、最小、按需限制和最大核心节点参数,根据您的需求创建各种扩展方案。

方案 1:仅扩展核心节点

要仅扩展核心节点,托管扩展参数必须满足以下要求:

  • 按需限制等于最大边界。

  • 最大核心节点等于最大边界。

当未指定按需限制和最大核心节点参数时,这两个参数都默认为最大边界。

以下示例仅演示了扩展核心节点的方案。

集群初始状态 扩展参数 扩展行为

实例组

核心:1 个按需

任务:1 个按需和 1 个 Spot

UnitType: Instances

MinimumCapacityUnits:1

MaximumCapacityUnits:20

MaximumOnDemandCapacityUnits:20

MaximumCoreCapacityUnits:20

使用按需类型在核心节点上扩展 1 到 20 个实例或实例机群单元。在任务节点上没有扩展。

实例机群

核心:1 个按需

任务:1 个按需和 1 个 Spot

UnitType: InstanceFleetUnits

MinimumCapacityUnits:1

MaximumCapacityUnits:20

MaximumOnDemandCapacityUnits:20

MaximumCoreCapacityUnits:20

方案 2:仅扩展任务节点

要仅扩展任务节点,托管扩展参数必须满足以下要求:

  • 最大核心节点必须等于最小边界。

以下示例仅演示了扩展任务节点的方案。

集群初始状态 扩展参数 扩展行为

实例组

核心:2 个按需

任务:1 个 Spot

UnitType: Instances

MinimumCapacityUnits:2

MaximumCapacityUnits:20

MaximumCoreCapacityUnits:2

保持核心节点稳定在 2 个,并且仅在 0 到 18 个实例或实例机群单元之间扩展任务节点。最小边界和最大边界之间的容量仅添加到任务节点。

实例机群

核心:2 个按需

任务:1 个 Spot

UnitType:InstanceFleetUnits

MinimumCapacityUnits:2

MaximumCapacityUnits:20

MaximumCoreCapacityUnits:2

方案 3:集群中仅有按需型实例

要仅拥有按需型实例,您的集群和托管扩展参数必须满足以下要求:

  • 按需限制等于最大边界。

    当未指定按需限制时,参数值默认为最大边界。默认值表示 Amazon EMR 仅扩展按需型实例。

如果最大核心节点小于最大边界,则可以使用最大核心节点参数来分配核心节点和任务节点之间的容量。

要在由实例组组成的集群中启用此方案,集群中的所有节点组必须在初始配置期间使用按需市场类型。

以下示例演示了在整个集群中使用按需型实例的方案。

集群初始状态 扩展参数 扩展行为

实例组

核心:1 个按需

任务:1 个按需

UnitType: Instances

MinimumCapacityUnits:1

MaximumCapacityUnits:20

MaximumOnDemandCapacityUnits:20

MaximumCoreCapacityUnits:12

使用按需类型在核心节点上扩展 1 到 12 个实例或实例机群单元。在任务节点上使用按需扩展剩余容量。不使用 Spot 实例进行扩展。

实例机群

核心:1 个按需

任务:1 个按需

UnitType:InstanceFleetUnits

MinimumCapacityUnits:1

MaximumCapacityUnits:20

MaximumOnDemandCapacityUnits:20

MaximumCoreCapacityUnits:12

方案 4:集群中只有 Spot 实例

要仅拥有 Spot 实例,托管扩展参数必须满足以下要求:

  • 按需限制设置为 0。

如果最大核心节点小于最大边界,则可以使用最大核心节点参数来分配核心节点和任务节点之间的容量。

要在由实例组组成的集群中启用此方案,核心实例组必须在初始配置期间使用 Spot 购买选项。如果任务实例组中没有 Spot 实例,则 EMR 托管扩展会在需要时使用 Spot 实例创建任务组。

以下示例演示了在整个集群中使用 Spot 实例的方案。

集群初始状态 扩展参数 扩展行为

实例组

核心:1 个 Spot

任务:1 个 Spot

UnitType: Instances

MinimumCapacityUnits:1

MaximumCapacityUnits:20

MaximumOnDemandCapacityUnits:0

使用 Spot 在核心节点上扩展 1 到 20 个实例或实例机群单元。不使用按需类型进行扩展。

实例机群

核心:1 个 Spot

任务:1 个 Spot

UnitType:InstanceFleetUnits

MinimumCapacityUnits:1

MaximumCapacityUnits:20

MaximumOnDemandCapacityUnits:0

方案 5:在核心节点上扩展按需型实例,在任务节点上扩展 Spot 实例

要在核心节点上扩展按需型实例和在任务节点上扩展 Spot 实例,托管扩展参数必须满足以下要求:

  • 按需限制必须等于最大核心节点。

  • 按需限制和最大核心节点必须小于最大边界。

要在由实例组组成的集群中启用此方案,核心节点组必须使用按需购买选项。

以下示例演示了在核心节点上扩展按需型实例和在任务节点上扩展 Spot 实例的方案。

集群初始状态 扩展参数 扩展行为

实例组

核心:1 个按需

任务:1 个按需和 1 个 Spot

UnitType: Instances

MinimumCapacityUnits:1

MaximumCapacityUnits:20

MaximumOnDemandCapacityUnits:7

MaximumCoreCapacityUnits:7

在核心节点上扩展到 6 个按需单元,因为任务节点上已有 1 个按需单元,并且按需的最大限制为 7。然后在任务节点上扩展到 13 个 Spot 单元。

实例机群

核心:1 个按需

任务:1 个按需和 1 个 Spot

UnitType:InstanceFleetUnits

MinimumCapacityUnits:1

MaximumCapacityUnits:20

MaximumOnDemandCapacityUnits:7

MaximumCoreCapacityUnits:7