You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何配置EMR实例队列Diversified策略实现多实例家族节点分配

配置EMR实例舰队的Diversified分配策略实现实例家族均匀分配

要实现每个m4实例家族启动2个Core节点的需求,你只需要修改config.json里CoreFleet的配置,添加实例供应规格来指定diversified分配策略,替代默认的lowestPrice策略即可。

修改后的完整config.json配置

[ 
  { 
    "Name": "MasterFleet", 
    "InstanceFleetType": "MASTER", 
    "TargetOnDemandCapacity": 1, 
    "InstanceTypeConfigs": [{"InstanceType": "m4.xlarge"}] 
  }, 
  { 
    "Name": "CoreFleet", 
    "InstanceFleetType": "CORE", 
    "TargetSpotCapacity": 6, 
    "LaunchSpecifications": { 
      "SpotSpecification": { 
        "TimeoutDurationMinutes": 10, 
        "TimeoutAction": "SWITCH_TO_ON_DEMAND" 
      } 
    }, 
    "InstanceFleetProvisioningSpecifications": {
      "SpotSpecification": {
        "AllocationStrategy": "diversified"
      }
    },
    "InstanceTypeConfigs": [ 
      { "InstanceType": "m4.large", "BidPrice": "0.1" }, 
      { "InstanceType": "m4.xlarge", "BidPrice": "0.2" }, 
      { "InstanceType": "m4.2xlarge", "BidPrice": "0.4" } 
    ] 
  } 
]

关键配置说明

  • InstanceFleetProvisioningSpecifications: 这个配置段专门用来定义实例舰队的资源分配策略,我们在其中的SpotSpecification下设置AllocationStrategy: "diversified",直接替换默认的lowestPrice策略。
  • diversified分配策略逻辑: 这个策略会在你列出的所有可用实例类型之间均匀分配目标容量。你设置了TargetSpotCapacity:6,同时有3种m4系列实例类型,所以EMR会自动给每个类型分配2个节点,刚好匹配你的需求。
  • 为什么之前会全部分配到同一家族?默认的lowestPrice策略会优先选择出价最低且有可用库存的实例类型,把所有目标容量都塞给它,这就是你之前遇到的情况。

使用修改后的配置创建集群

还是用你原来的AWS CLI命令,只要替换成修改后的config.json文件就行:

aws emr create-cluster \
 --instance-fleets file://config.json

额外注意事项

  1. 尽量保证TargetSpotCapacity是实例类型数量的整数倍(比如这里6÷3=2),这样能完美实现均匀分配;如果不是,EMR会先尽量均分,剩余的少量容量会分配给任意可用的实例类型。
  2. 每个实例类型的BidPrice要设置合理,确保Spot实例能成功启动,否则EMR会按照你设置的TimeoutAction切换到On-Demand实例(如果开启的话)。

内容的提问来源于stack exchange,提问作者sam

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 06:44:39