使用 EMRFS 重试 Amazon S3 请求 - Amazon EMR
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

使用 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 重试策略时优化重试行为。对于大多数使用案例,我们建议您使用默认值。

高级 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.increaseIncrementfs.s3.aimd.reductionFactor 指定的值变化。

初始速率也用于 GET 请求,并针对 PUT 请求按比例 (3500/5500) 扩展。

fs.s3.aimd.adjustWindow 2 控制调整请求速率的频率,以响应数量衡量。
fs.s3.aimd.maxAttempts 100 设置尝试请求的最大尝试次数。