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

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

使用重试 Amazon S3 请求 EMRFS

本主题提供有关向Amazon S3发出请求时可以使用的重试策略的信息。EMRFS当您的请求速率提高时,S3 会尝试扩展以支持新的速率。在此过程中,S3 可以限制请求并返回 503 Slow Down 错误。为了提高 S3 请求的成功率,您可以通过在 emrfs-site 配置中配置属性以调整重试策略。

您可以通过以下方法调整重试策略。

  • 提高默认指数退避重试策略的最大重试限制。

  • 启用并配置加法-增加/乘法-减少 () 重试策略。AIMDAIMD支持 Amazon EMR 版本 6.4.0 及更高版本。

使用默认的指数退避策略

默认情况下,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 6.4.0 及更高EMR版本中,EMRFS支持基于加法-增加/乘法-减少 () 模型的替代重试策略。AIMD当您使用大型 Amazon EMR 集群时,AIMD重试策略特别有用。

AIMD使用有关最近成功请求的数据计算自定义请求率。此策略减少了受限请求的数量和每个请求所需的总尝试次数。

要启用AIMD重试策略,您必须在emrfs-site配置true中将该fs.s3.aimd.enabled属性设置为,如下例所示。

[ { "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请求,并按比例缩放 (3500/5500) 来处理请求。PUT

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