

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# EMRFS で Amazon S3 リクエストを再試行する
<a name="emr-spark-emrfs-retry"></a>

このトピックでは、EMRFS を使用して Amazon S3 にリクエストを行うときに使用できる再試行戦略について説明します。リクエストレートが上昇すると、S3 は新しいレートをサポートするためにスケーリングを試みます。このプロセス中、S3 はリクエストをスロットルし、`503 Slow Down` エラーを返す場合があります。S3 リクエストの成功率を高めるために、`emrfs-site` 設定でプロパティを設定し、再試行戦略を調整できます。

次の方法で再試行戦略を調整できます。
+ デフォルトのエクスポネンシャルバックオフ再試行戦略の再試行上限を増やします。
+ additive-increase/multiplicative-decrease (AIMD) 再試行戦略を有効にして設定します。AIMD は Amazon EMR リリース 6.4.0 以降でサポートされています。

## デフォルトのエクスポネンシャルバックオフ戦略を使用する
<a name="emr-spark-emrfs-retry-exponential-backoff"></a>

デフォルトでは、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"
      }
    }
]
```

設定オブジェクトの処理の詳細については、「[アプリケーションの設定](emr-configure-apps.md)」を参照してください。

## AIMD 再試行戦略を使用する
<a name="emr-spark-emrfs-retry-aimd"></a>

Amazon EMR リリース 6.4.0 以降では、EMRFS は、additive-increase/multiplicative-decrease (AIMD) モデルに基づく代替再試行戦略をサポートします。AIMD 再試行戦略は、大規模な Amazon EMR クラスターで作業する場合に特に便利です。

AIMD は、最近の成功したリクエストに関するデータを使用してカスタムリクエストレートを計算します。この戦略では、スロットリングされるリクエストの数と、リクエストごとに必要な合計試行数が減少します。

AIMD 再試行戦略を有効にするには、以下の例のように、`emrfs-site` 設定で `fs.s3.aimd.enabled` プロパティを `true` に設定する必要があります。

```
[
    {
      "Classification": "emrfs-site",
      "Properties": {
        "fs.s3.aimd.enabled": "true"
      }
    }
]
```

設定オブジェクトの処理の詳細については、「[アプリケーションの設定](emr-configure-apps.md)」を参照してください。

## 詳細な AIMD 再試行設定
<a name="emr-spark-emrfs-retry-advanced-properties"></a>

次の表にリストされているプロパティを設定して、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 | リクエストを試行する最大試行回数を設定します。 | 