【问题标题】:How to Add TaskInstanceGroup to AWS EMR for autoscaling using cloudformation?如何将 TaskInstanceGroup 添加到 AWS EMR 以使用 cloudformation 进行自动扩展?
【发布时间】:2020-10-14 21:13:34
【问题描述】:

我想为任务节点添加一个 Auto Scaling 组,但无法使其与 cloudformation 一起使用。

CoreInstanceGroup 也一样,如下所示。

Instances:
        CoreInstanceGroup:
          InstanceCount: 1
          InstanceType: !Ref CoreInstanceType
          Market: ON_DEMAND
          Name: Core Instance
          AutoScalingPolicy:
            Constraints:
              MinCapacity: !Ref CoreMinCapacity
              MaxCapacity: !Ref CoreMaxCapacity

当我用 TaskInstanceGroup 替换 CoreInstanceGroup 时,linter 会发出警告,并且在运行脚本时失败并出现错误 Property Not found。

遇到了一个引用 TaskInstanceGroup 的 Terraform 脚本。有人有办法解决这个问题吗?

TIA。

【问题讨论】:

    标签: amazon-web-services amazon-emr autoscaling


    【解决方案1】:

    任务实例组不属于AWS::EMR::Cluster。这就是您收到错误消息的原因。
    您已将 TaskInstanceGroup 附加为不同的资源。
    这是AWS::EMR::InstanceGroupConfig


    JobFlowId: !Ref myEMRCluster 这将确定它将在哪个集群中附加资源。 myEMRCluster 是 EMR 的资源名称。
    您可以附加多个具有不同自动缩放策略的 TaskInstanceGroup。
    您还可以为您的任务组使用不同的 CloudFormation 脚本。在这种情况下,您必须传递集群 ID,例如 JobFlowId: 'j-ABCD123456789'

    AWSTemplateFormatVersion: 2010-09-09
    Resources:
      myEMRCluster:
        Type: 'AWS::EMR::Cluster'
        Properties: <... Your existing config ...>
      TaskInstanceGroup:
        Type: 'AWS::EMR::InstanceGroupConfig'
        Properties:
          InstanceRole: TASK
          InstanceCount: 0
          InstanceType: 'r5.8xlarge'
          Market: SPOT
          BidPrice: '1.110'
          Name: cfnTask
          JobFlowId: !Ref myEMRCluster
          AutoScalingPolicy:
            Constraints:
              MinCapacity: 0
              MaxCapacity: 40
            Rules:
              - Name: container-pending-ratio-scale-out
                Description: >-
                  Replicates the default scale-out rule in the console for YARN
                  memory.
                Action:
                  SimpleScalingPolicyConfiguration:
                    AdjustmentType: CHANGE_IN_CAPACITY
                    ScalingAdjustment: 10
                    CoolDown: 300
                Trigger:
                  CloudWatchAlarmDefinition:
                    ComparisonOperator: GREATER_THAN
                    EvaluationPeriods: 2
                    MetricName: ContainerPendingRatio
                    Namespace: AWS/ElasticMapReduce
                    Period: 300
                    Threshold: 2
                    Statistic: AVERAGE
                    Unit: COUNT
                    Dimensions:
                      - Key: JobFlowId
                        Value: '${emr.clusterId}'
              - Name: idle-scale-in
                Description: Replicates the default scale-in rule in the console for idle.
                Action:
                  SimpleScalingPolicyConfiguration:
                    AdjustmentType: CHANGE_IN_CAPACITY
                    ScalingAdjustment: -40
                    CoolDown: 300
                Trigger:
                  CloudWatchAlarmDefinition:
                    ComparisonOperator: LESS_THAN_OR_EQUAL
                    EvaluationPeriods: 2
                    MetricName: ContainerAllocated
                    Namespace: AWS/ElasticMapReduce
                    Period: 300
                    Threshold: 0
                    Statistic: AVERAGE
                    Unit: COUNT
                    Dimensions:
                      - Key: JobFlowId
                        Value: '${emr.clusterId}'
      myEMRStep:
        Type: 'AWS::EMR::Step'
        Properties: <... If you have any ...>
    
    

    希望这会有所帮助。

    【讨论】:

      猜你喜欢
      • 2013-02-06
      • 1970-01-01
      • 2015-04-11
      • 2017-12-11
      • 2017-07-01
      • 1970-01-01
      • 2014-08-25
      • 2019-11-17
      • 1970-01-01
      相关资源
      最近更新 更多