本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
使用 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 | 设置尝试请求的最大尝试次数。 |