如何使 EMR 集群自动扩展以利用按需实例,同时保持在最大限制内?

问题描述 投票:0回答:1

我有一个由 Terraform 创建的 EMR 集群。这是自动缩放策略:

resource "aws_emr_managed_scaling_policy" "my_aws_emr_managed_scaling_policy" {
  cluster_id = var.amazon_emr_cluster_id
  compute_limits {
    unit_type                       = "InstanceFleetUnits"
    minimum_capacity_units          = 2
    maximum_capacity_units          = 10
    maximum_ondemand_capacity_units = 2
    maximum_core_capacity_units     = 1
  }
}

当我检查 EMR UI 时,您可以看到一切看起来都正确。

最初我得到了预期的这些:

  • 1 个按需主实例
  • 1 个按需核心实例
  • 1 个点任务实例

但是,在运行大约 18 小时后,集群会自动扩展到

  • 1 个按需主实例
  • 1 个按需核心实例
  • 1 个按需任务实例

但是我确实将

maximum_ondemand_capacity_units
设置为 2。您也可以从 EMR UI 看到

要将主节点配置为使用按需定价,并将集群中的其他节点配置为使用现货定价,请将此值设置为 1。要配置整个集群以使用按需定价,请使用与最大集群大小相同的值.

根据我的设置,我预计会有 1 个主要按需实例和 1 个核心按需实例,其余 1 ~ 8 个任务实例将是现货实例。

如何使 EMR 集群自动扩展以利用按需实例,同时保持在最大限制内?就我而言,这将是

  • 1 个按需主实例
  • 1 个按需核心实例
  • 1 ~ 8 个点任务实例

因此按需实例只有 2 个。

谢谢!

amazon-web-services terraform amazon-emr
1个回答
0
投票

尝试将

MaximumOnDemandCapacityUnits
MaximumCoreCapacityUnits
都设置为
1
。我的猜测是,与 UI 所说的相反,
MaximumOnDemandCapacityUnits
不计算主舰队实例。

该猜测基于以下事实:EMR Managed Scaling 仅调整核心和任务队列的大小以及文档中某些参数的描述。请参阅下面ComputeLimits页面的相关报价;重点是我的。

最小容量单位

Amazon EC2 单元的下限。对于实例组,它通过 vCPU 核心或实例进行衡量;对于实例队列,它通过单位进行衡量。托管扩展活动不允许超出此边界。 该限制仅适用于核心节点和任务节点。主节点初始配置后无法扩容

此外,您的场景包含在第 5 页了解节点分配策略和场景中,建议相同的配置。

场景5:扩展核心节点上的按需实例和任务节点上的Spot实例

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

  • 按需限制必须等于最大核心节点数。
  • 按需限制和最大核心节点都必须小于最大边界。
© www.soinside.com 2019 - 2024. All rights reserved.