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

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

使用 重試 Amazon S3 請求 EMRFS

本主題提供使用 向 Amazon S3 提出請求時,您可以使用的重試策略的相關資訊EMRFS。當您的請求速率加快時,S3 嘗試擴展以支援新的速率。在此過程中,S3 可能對請求限流並傳回 503 Slow Down 錯誤。若要提高您的 S3 請求的成功率,您可以透過在 emrfs-site 組態中設定屬性,調整您的重試策略。

您可以採用下列方式調整您的重試策略。

  • 提高預設指數退避重試策略的重試上限。

  • 啟用並設定additive-increase/multiplicative-decrease(AIMD) 重試策略。AIMD 支援 Amazon 6.4.0 版及更新EMR版本。

使用預設指數退避策略

根據預設, 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 支援以additive-increase/multiplicative-decrease(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 設定嘗試請求的最大次數。