使用 EMRFS 的重試 Amazon S3 請求 - Amazon EMR

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

使用 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 設定嘗試請求的最大次數。