本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
使用 EMRFS 重试 Amazon S3 请求
本主题提供有关使用 EMRFS 向 Amazon S3 发出请求时可以使用的重试策略的信息。当您的请求速率提高时,S3 会尝试扩展以支持新的速率。在此过程中,S3 可以限制请求并返回 503 Slow Down 错误。为了提高 S3 请求的成功率,您可以通过在 emrfs-site 配置中配置属性以调整重试策略。
您可以通过以下方法调整重试策略。
- 
                    
提高默认指数退避重试策略的最大重试限制。
 - 
                    
启用和配置加性增长/加速递减 (AIMD) 重试策略。Amazon EMR 发行版 6.4.0 及更高版本支持 AIMD。
 
使用默认的指数退避策略
默认情况下,EMRFS 使用指数退避策略来重试 Amazon S3 请求。默认 EMRFS 重试限制为 15。为避免 S3 503 Slow Down 错误,您可以在创建新集群时、在正在运行的群集上或应用程序运行时提高重试限制。
要提高重试限制,您必须在您的 emrfs-site 配置中更改 fs.s3.maxRetries 的值。以下示例配置将 fs.s3.maxRetries 设置为自定义值 30。
[ { "Classification": "emrfs-site", "Properties": { "fs.s3.maxRetries": "30" } } ]
有关使用配置对象的更多信息,请参阅 配置应用程序。
使用 AIMD 重试策略
在 Amazon EMR 发行版 6.4.0 及更高版本中,EMRFS 支持基于加性增长/加速递减(AIMD)模型的替代重试策略。当您使用大型 Amazon EMR 集群时,AIMD 重试策略尤其有用。
AIMD 使用有关最近成功请求的数据计算自定义请求率。此策略减少了受限请求的数量和每个请求所需的总尝试次数。
要启用 AIMD 重试策略,必须在您的 emrfs-site 配置中将 fs.s3.aimd.enabled 属性设置为 true,如以下示例所示。
[ { "Classification": "emrfs-site", "Properties": { "fs.s3.aimd.enabled": "true" } } ]
有关使用配置对象的更多信息,请参阅 配置应用程序。
高级 AIMD 重试设置
您可以配置下表中列出的属性,以便在使用 AIMD 重试策略时优化重试行为。对于大多数使用案例,我们建议您使用默认值。
| 属性 | 原定设置值 | 说明 | 
|---|---|---|
fs.s3.aimd.increaseIncrement | 
                                0.1 | 控制连续请求成功时请求速率的增长速度。 | 
fs.s3.aimd.reductionFactor | 
                                2 | 控制 Amazon S3 返回 503 响应时请求速率降低的速度。默认因子 2 将请求率降低一半。 | 
fs.s3.aimd.minRate | 
                                0.1 | 设置请求经历 S3 持续限制时的请求速率的下限。 | 
fs.s3.aimd.initialRate | 
                                5500 | 设置初始请求速率,然后该速率将根据您为 fs.s3.aimd.increaseIncrement 和 fs.s3.aimd.reductionFactor 指定的值变化。初始速率也用于 GET 请求,并针对 PUT 请求按比例 (3500/5500) 扩展。  | 
                            
fs.s3.aimd.adjustWindow | 
                                2 | 控制调整请求速率的频率,以响应数量衡量。 | 
fs.s3.aimd.maxAttempts | 
                                100 | 设置尝试请求的最大尝试次数。 |