了解emr自动缩放

wmtdaxz3  于 2021-05-24  发布在  Spark
关注(0)|答案(1)|浏览(703)

我有以下代码,工作正常:

def emr_client():
    config = get_aws_config()
    return boto3.client(
        'emr',
        region_name=config['aws_region'],
        aws_access_key_id=config['aws_access_key_id'],
        aws_secret_access_key=config['aws_secret_access_key']
    )

response = emr_client().run_job_flow(
        Name=cluster_name,
        ReleaseLabel="**********",
        Instances={
            'InstanceGroups': build_instance_groups_config(num_core_nodes, num_task_nodes, spots,
                                                           instance_type='r4.4xlarge'),
            'Ec2KeyName': '**********',
            'KeepJobFlowAliveWhenNoSteps': True,
            'TerminationProtected': False,
            'EmrManagedMasterSecurityGroup': '**********',
            'EmrManagedSlaveSecurityGroup': '**********',
            'Ec2SubnetId': '**********',
        },
        VisibleToAllUsers=True,
        JobFlowRole='EMR_EC2_DefaultRole',
        ServiceRole='EMR_DefaultRole',
        Applications=[
            {'Name': 'Hadoop'},
            {'Name': 'Spark'},
            {'Name': 'Ganglia'},
            {'Name': 'Zeppelin'}
        ],
        Tags=tags,
        Configurations=[
            {
                "Classification": "yarn-site",
                "Properties": {"yarn.nodemanager.vmem-check-enabled": "false"}
            }
        ]
    )

现在,我想修改一下,以便使用自动缩放。以下是相关文档:runjobflow
我看到有个东西叫做 "AutoScalingRole": "string" ,以及 "AutoScalingPolicy" 这是一个相当大的对象,但我没有看到任何例子显示如何填充它,也没有找到这样的谷歌。
有人能给我举个例子吗?
另外,在我做了更改之后,如何检查自动缩放是否真的工作?

rsaldnfx

rsaldnfx1#

我想你正在寻找自定义的电子病历自动缩放政策。您可以在这里找到详细的文档。
您首先需要创建iam角色或使用 EMR_AutoScaling_DefaultRole 自动缩放的默认规则。你得把这个放进去 AutoScalingRole 可以创建自动缩放 policy 以及 rules 如下文所述。
如果要创建群集,请在amazon emr控制台中,选择创建群集,选择转到高级选项,选择步骤1:软件和步骤的选项,然后转到步骤2:硬件配置。或者-如果要修改正在运行的集群中的示例组,请从集群列表中选择集群,然后展开硬件部分。
在cluster scaling部分中,选择enable cluster saling。然后选择“创建自定义自动缩放策略”。在自定义自动缩放策略表中,单击要配置的示例组行中显示的铅笔图标。自动缩放规则屏幕打开。
键入示例组向外扩展后要包含的最大示例数,然后键入示例组向内扩展后要包含的最小示例数。
单击铅笔可编辑规则参数,单击x可从策略中删除规则,单击添加规则可添加其他规则。
如本主题前面所述,选择规则参数。有关amazon emr可用的cloudwatch度量的描述,请参阅《amazon cloudwatch用户指南》中的amazon emr度量和维度。
在下面的示例中,我们有一些在文档中定义为
maximum instances约束指定示例组中可以包含的最大amazon ec2示例数,并应用于所有横向扩展规则。类似地,minimum instances约束指定amazonec2示例的最小数量,并应用于所有scale-in规则。 Name 是您先前创建的规则的名称。 scaling_adjustment 要添加/终止的ec2示例数。 Cool down period 是应用下一个规则/活动性之前需要通过的时间阈值。

"InstanceGroups": [ 
     { 
        "AutoScalingPolicy": { 
           "Constraints": { 
              "MaxCapacity": number,
              "MinCapacity": number
           },
           "Rules": [ 
              { 
                 "Action": { 
                    "Market": "string",
                    "SimpleScalingPolicyConfiguration": { 
                       "AdjustmentType": "string",
                       "CoolDown": number,
                       "ScalingAdjustment": number
                    }
                 },
                 "Description": "string",
                 "Name": "string",
                 "Trigger": { 
                    "CloudWatchAlarmDefinition": { 
                       "ComparisonOperator": "string",
                       "Dimensions": [ 
                          { 
                             "Key": "string",
                             "Value": "string"
                          }
                       ],
                       "EvaluationPeriods": number,
                       "MetricName": "string",
                       "Namespace": "string",
                       "Period": number,
                       "Statistic": "string",
                       "Threshold": number,
                       "Unit": "string"
                    }
                 }
              }
           ]
        },
        "BidPrice": "string",
        "Configurations": [ 
           { 
              "Classification": "string",
              "Configurations": [ 
                 "Configuration"
              ],
              "Properties": { 
                 "string" : "string" 
              }
           }
        ],
        "EbsConfiguration": { 
           "EbsBlockDeviceConfigs": [ 
              { 
                 "VolumeSpecification": { 
                    "Iops": number,
                    "SizeInGB": number,
                    "VolumeType": "string"
                 },
                 "VolumesPerInstance": number
              }
           ],
           "EbsOptimized": boolean
        },
        "InstanceCount": number,
        "InstanceRole": "string",
        "InstanceType": "string",
        "Market": "string",
        "Name": "string"
     }
  ],

相关问题