将 AWS EMR 集群自动扩展到 0 个节点
Autoscaling AWS EMR cluster to 0 nodes
交叉发帖来自:https://forums.aws.amazon.com/thread.jspa?messageID=766424
嘿,
正在尝试将此策略应用于核心实例组:
{
"Constraints": {
"MinCapacity": 0,
"MaxCapacity": 2
},
"Rules": [
{
"Name": "ScaleUp",
"Action": {
"Market": "ON_DEMAND",
"SimpleScalingPolicyConfiguration": {
"AdjustmentType": "EXACT_CAPACITY",
"ScalingAdjustment": 5,
"CoolDown": 300
}
},
"Trigger": {
"CloudWatchAlarmDefinition": {
"ComparisonOperator": "GREATER_THAN",
"MetricName": "AppsPending",
"Threshold": 0,
"Period": 300
}
}
},
{
"Name": "ScaleDown",
"Action": {
"Market": "ON_DEMAND",
"SimpleScalingPolicyConfiguration": {
"AdjustmentType": "EXACT_CAPACITY",
"ScalingAdjustment": 0,
"CoolDown": 300
}
},
"Trigger": {
"CloudWatchAlarmDefinition": {
"ComparisonOperator": "LESS_THAN_OR_EQUAL",
"MetricName": "AppsRunning",
"Threshold": 0,
"Period": 300
}
}
}
]
}
但是我收到这个错误:
An error occurred (ValidationException) when calling the
PutAutoScalingPolicy operation: Auto Scaling constraint parameter
minCapacity should be at least 1 for Core Instance Group.
我不是 EMR 方面的专家,但根据文档我认为这是可能的(我可以在 UI 中手动创建一个仅主集群,为什么会存在这种差异?)。主节点 运行 按照 cron 计划执行作业,当它启动时它会生成作业,然后 AutoScaling 启动核心实例来处理它,在作业完成后缩减规模。
有什么建议吗?
谢谢,亚历克斯
PS。为了阐明功能要求,我正在尝试 运行 master 上的 zeppelin 仪表板服务,让它每 24 小时启动一次批处理作业,这将需要几个节点,然后在其余时间缩小回 0 个节点.如果我一头雾水,很高兴考虑其他建议来实现这一目标。
的确,您可以在没有任何核心节点的情况下启动 single-node、master-only 集群,但这是一种特殊的 "cluster",它在 master 上运行所有内容。无法从 multi-node 集群过渡到 single-node 集群,反之亦然。因此,核心实例组至少有 1 个实例,即使在使用自动缩放时也是如此。
单节点集群不可扩展。您需要至少有一个核心节点和主节点。因此,在应用扩展策略时,核心节点的最小数量应为 1。
请从AWS文档中找到截图:
详情请参考link:
https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-scale-on-demand.html
交叉发帖来自:https://forums.aws.amazon.com/thread.jspa?messageID=766424
嘿,
正在尝试将此策略应用于核心实例组:
{
"Constraints": {
"MinCapacity": 0,
"MaxCapacity": 2
},
"Rules": [
{
"Name": "ScaleUp",
"Action": {
"Market": "ON_DEMAND",
"SimpleScalingPolicyConfiguration": {
"AdjustmentType": "EXACT_CAPACITY",
"ScalingAdjustment": 5,
"CoolDown": 300
}
},
"Trigger": {
"CloudWatchAlarmDefinition": {
"ComparisonOperator": "GREATER_THAN",
"MetricName": "AppsPending",
"Threshold": 0,
"Period": 300
}
}
},
{
"Name": "ScaleDown",
"Action": {
"Market": "ON_DEMAND",
"SimpleScalingPolicyConfiguration": {
"AdjustmentType": "EXACT_CAPACITY",
"ScalingAdjustment": 0,
"CoolDown": 300
}
},
"Trigger": {
"CloudWatchAlarmDefinition": {
"ComparisonOperator": "LESS_THAN_OR_EQUAL",
"MetricName": "AppsRunning",
"Threshold": 0,
"Period": 300
}
}
}
]
}
但是我收到这个错误:
An error occurred (ValidationException) when calling the PutAutoScalingPolicy operation: Auto Scaling constraint parameter minCapacity should be at least 1 for Core Instance Group.
我不是 EMR 方面的专家,但根据文档我认为这是可能的(我可以在 UI 中手动创建一个仅主集群,为什么会存在这种差异?)。主节点 运行 按照 cron 计划执行作业,当它启动时它会生成作业,然后 AutoScaling 启动核心实例来处理它,在作业完成后缩减规模。
有什么建议吗?
谢谢,亚历克斯
PS。为了阐明功能要求,我正在尝试 运行 master 上的 zeppelin 仪表板服务,让它每 24 小时启动一次批处理作业,这将需要几个节点,然后在其余时间缩小回 0 个节点.如果我一头雾水,很高兴考虑其他建议来实现这一目标。
的确,您可以在没有任何核心节点的情况下启动 single-node、master-only 集群,但这是一种特殊的 "cluster",它在 master 上运行所有内容。无法从 multi-node 集群过渡到 single-node 集群,反之亦然。因此,核心实例组至少有 1 个实例,即使在使用自动缩放时也是如此。
单节点集群不可扩展。您需要至少有一个核心节点和主节点。因此,在应用扩展策略时,核心节点的最小数量应为 1。
请从AWS文档中找到截图:
详情请参考link: https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-scale-on-demand.html