本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
节流错误
当 Amazon EMR 因另一项服务限制活动而无法完成请求时,会出现“Throttled from Amazon EC2
while launching cluster”和“Failed to provision instances due to throttling from Amazon EC2
”两项错误。Amazon EC2 是限制错误的最常见来源,但其它服务可能是限制错误的原因。Amazon 服务限制适用于每个区域以提高性能,节流错误表明您已超出该区域中账户的服务限制。
可能的原因
Amazon EC2 节流错误的最常见来源是启动了大量的集群实例,因此超出了 EC2 实例的服务限制。集群实例可能会因以下原因启动:
创建了新集群。
手动调整了集群。有关更多信息,请参阅手动调整正在运行的集群的大小。
作为自动扩展规则的结果,集群中的实例组添加实例(向外扩展)。有关更多信息,请参阅了解自动伸缩角色。
集群中的实例队列添加实例以满足增加的目标容量。有关更多信息,请参阅配置实例集。
向 Amazon EC2 发出的 API 请求的频率或类型也可能导致节流错误。有关 Amazon EC2 如何限制 API 请求的更多信息,请参阅《Amazon EC2 API 参考》中的查询 API 请求率。
解决方案
考虑以下解决方案:
按照《Amazon Web Services 一般参考》中的 Amazon Service Quotas 中的说明请求提高服务限额。对于某些 API,设置 CloudWatch 事件可能比增加限制更好。有关更多详细信息,请参阅何时在中设置 EMR 事件 CloudWatch。
如果您的集群以相同的时间表启动(例如,在整点开始时),请考虑错开启动时间。
如果您有针对峰值需求而定义大小的集群,并且您定期拥有实例容量,请考虑指定自动扩展以按需添加和删除实例。通过这种方式,可以更高效地使用实例,并且根据需求配置文件,可以跨账户在给定时间请求更少的实例。有关更多信息,请参阅将自动伸缩与实例组的自定义策略结合使用。