

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

# ジョブ再試行ポリシーの使用
<a name="jobruns-using-retry-policies"></a>

Amazon EMR on EKS バージョン 6.9.0 以降では、ジョブ実行の再試行ポリシーを設定できます。再試行ポリシーにより、ジョブドライバーポッドが失敗したり削除されたりすると、自動的に再起動されます。これにより、長時間実行されている Spark ストリーミングジョブの障害に対する耐性が高まります。

## ジョブの再試行ポリシーの設定
<a name="setting-retry-policy"></a>

再試行ポリシーを設定するには、[StartJobRun](https://docs.aws.amazon.com/emr-on-eks/latest/APIReference/API_StartJobRun.html) API を使用して `RetryPolicyConfiguration` フィールドを指定します。例 `retryPolicyConfiguration` を以下に示します。

```
aws emr-containers start-job-run \
--virtual-cluster-id cluster_id \
--name sample-job-name \
--execution-role-arn execution-role-arn \
--release-label emr-6.9.0-latest \
--job-driver '{
  "sparkSubmitJobDriver": {
    "entryPoint": "local:///usr/lib/spark/examples/src/main/python/pi.py",
    "entryPointArguments": [ "2" ],
    "sparkSubmitParameters": "--conf spark.executor.instances=2 --conf spark.executor.memory=2G --conf spark.executor.cores=2 --conf spark.driver.cores=1"
  }
}' \
--retry-policy-configuration '{
    "maxAttempts": 5
  }' \
--configuration-overrides '{
  "monitoringConfiguration": {
    "cloudWatchMonitoringConfiguration": {
      "logGroupName": "my_log_group_name",
      "logStreamNamePrefix": "my_log_stream_prefix"
    },
    "s3MonitoringConfiguration": {
       "logUri": "s3://amzn-s3-demo-logging-bucket"
    }
  }
}'
```

**注記**  
`retryPolicyConfiguration` は、 AWS CLI 1.27.68 以降のバージョンでのみ使用できます。を最新バージョン AWS CLI に更新するには、[「 の最新バージョンのインストールまたは更新」を参照してください。 AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html)

`maxAttempts` フィールドには、ジョブドライバーポッドが失敗したり削除されたりした場合に再起動する最大回数を設定します。ジョブドライバーが 2 回再試行する間の実行間隔は、[Kubernetes ドキュメント](https://kubernetes.io/docs/concepts/workloads/controllers/job/#pod-backoff-failure-policy)で説明されているように、指数関数的な再試行間隔 (10 秒、20 秒、40 秒...) で、上限は 6 分です。

**注記**  
ジョブドライバーを追加実行するたびに、別のジョブ実行として請求され、[Amazon EMR on EKS 料金](https://aws.amazon.com/emr/pricing/#Amazon_EMR_on_Amazon_EKS)が適用されます。

### 再試行ポリシー設定値
<a name="retry-config"></a>
+ **ジョブのデフォルト再試行ポリシー:** `StartJobRun` には、デフォルトで最大試行回数 1 回に設定された再試行ポリシーが含まれます。再試行ポリシーは、必要に応じて設定できます。
**注記**  
`retryPolicyConfiguration` の `maxAttempts` が 1 に設定されている場合、失敗時にドライバーポッドを起動するための再試行は行われません。
+ **ジョブの再試行ポリシーを無効にする:** 再試行ポリシーを無効にするには、retryPolicyConfiguration の最大試行値を 1 に設定します。

  ```
  "retryPolicyConfiguration": {
      "maxAttempts": 1
  }
  ```
+ **有効範囲内のジョブに maxAttempts を設定する:** `maxAttempts` 値が有効範囲外の場合、`StartJobRun` 呼び出しは失敗します。有効な `maxAttempts` 範囲は 1 から 2,147,483,647 (32 ビット整数) で、これは Kubernetes の `backOffLimit` 構成設定でサポートされている範囲です。詳細については、Kubernetes ドキュメントの「[Pod 失敗のバックオフポリシー](https://kubernetes.io/docs/concepts/workloads/controllers/job/#pod-backoff-failure-policy)」を参照してください。`maxAttempts` 値が無効な場合、以下のエラーメッセージが返されます。

  ```
  {
   "message": "Retry policy configuration's parameter value of maxAttempts is invalid"
  }
  ```

## ジョブの再試行ポリシーステータスの取得
<a name="retrieve-policy"></a>

[https://docs.aws.amazon.com/emr-on-eks/latest/APIReference/API_ListJobRuns.html](https://docs.aws.amazon.com/emr-on-eks/latest/APIReference/API_ListJobRuns.html) および [https://docs.aws.amazon.com/emr-on-eks/latest/APIReference/API_DescribeJobRun.html](https://docs.aws.amazon.com/emr-on-eks/latest/APIReference/API_DescribeJobRun.html) API を使用して、ジョブの再試行のステータスを表示できます。再試行ポリシー設定が有効になっているジョブをリクエストすると、`ListJobRun` および `DescribeJobRun` レスポンスには、`RetryPolicyExecution` フィールドの再試行ポリシーのステータスが含まれます。さらに、`DescribeJobRun` レスポンスにはジョブの `StartJobRun` リクエストに入力された `RetryPolicyConfiguration` が含まれます。

**レスポンス例**

------
#### [ ListJobRuns response ]

```
{
  "jobRuns": [
    ...
    ...
    "retryPolicyExecution" : {
      "currentAttemptCount": 2
    }
    ...
    ...
  ]
}
```

------
#### [ DescribeJobRun response ]

```
{
  ...
  ...
  "retryPolicyConfiguration": {
    "maxAttempts": 5
   },
   "retryPolicyExecution" : {
    "currentAttemptCount": 2
  },
  ...
  ...
}
```

------

これらのフィールドは、以下の「[再試行ポリシー設定値](#retry-config)」で説明するように、ジョブで再試行ポリシーが無効になっている場合は表示されません。

## 再試行ポリシーを使用してジョブをモニタリングする
<a name="monitoring-retry"></a>

再試行ポリシーを有効にすると、作成されたジョブドライバーごとに CloudWatch イベントが生成されます。これらのイベントをサブスクライブするには、以下のコマンドを使用して CloudWatch イベントルールを設定します。

```
aws events put-rule \
--name cwe-test \
--event-pattern '{"detail-type": ["EMR Job Run New Driver Attempt"]}'
```

このイベントはジョブドライバーの `newDriverPodName`、`newDriverCreatedAt` タイムスタンプ、`previousDriverFailureMessage`、および `currentAttemptCount` に関する情報を返します。再試行ポリシーが無効になっている場合、これらのイベントは作成されません。

CloudWatch イベントを使用してジョブをモニタリングする方法の詳細については、「[Amazon CloudWatch Events でジョブをモニタリングする](monitoring.md#monitoring-cloudwatch-events)」を参照してください。

## ドライバーとエグゼキュター用のログを検索する
<a name="finding-logs"></a>

ドライバーポッド名は形式 `spark-<job id>-driver-<random-suffix>` に従います。ドライバーが生成するエグゼキューターポッド名にも同じ `random-suffix` が追加されます。この `random-suffix` を使用すると、ドライバーとそれに関連するエグゼキューターのログを検索できます。`random-suffix` は、そのジョブの[再試行ポリシーが有効になっている](#retry-config)場合にのみ存在します。それ以外の場合は、`random-suffix` は存在しません。

ログ記録用のモニタリング設定を使用してジョブを設定する方法の詳細については、「[Spark アプリケーションの実行](getting-started.md#getting-started-run-spark-app)」を参照してください。