我有以下代码,工作正常:
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"
这是一个相当大的对象,但我没有看到任何例子显示如何填充它,也没有找到这样的谷歌。
有人能给我举个例子吗?
另外,在我做了更改之后,如何检查自动缩放是否真的工作?
1条答案
按热度按时间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
是应用下一个规则/活动性之前需要通过的时间阈值。