翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
ジョブ再試行ポリシーの使用
Amazon EMR on EKS バージョン 6.9.0 以降では、ジョブ実行の再試行ポリシーを設定できます。再試行ポリシーにより、ジョブドライバーポッドが失敗したり削除されたりすると、自動的に再起動されます。これにより、長時間実行されている Spark ストリーミングジョブの障害に対する耐性が高まります。
ジョブの再試行ポリシーの設定
再試行ポリシーを設定するには、StartJobRun 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 の最新バージョンを使用してインストールまたは更新を行う」を参照してください
maxAttempts
フィールドには、ジョブドライバーポッドが失敗したり削除されたりした場合に再起動する最大回数を設定します。ジョブドライバーが 2 回再試行する間の実行間隔は、Kubernetes ドキュメント
注記
ジョブドライバーを追加実行するたびに、別のジョブ実行として請求され、Amazon EMR on EKS 料金
再試行ポリシー設定値
-
ジョブのデフォルト再試行ポリシー:
StartJobRun
には、デフォルトで最大試行回数 1 回に設定された再試行ポリシーが含まれます。再試行ポリシーは、必要に応じて設定できます。注記
retryPolicyConfiguration
のmaxAttempts
が 1 に設定されている場合、失敗時にドライバーポッドを起動するための再試行は行われません。 -
ジョブの再試行ポリシーを無効にする: 再試行ポリシーを無効にするには、retryPolicyConfiguration の最大試行値を 1 に設定します。
"retryPolicyConfiguration": { "maxAttempts": 1 }
-
有効範囲内のジョブに maxAttempts を設定する:
maxAttempts
値が有効範囲外の場合、StartJobRun
呼び出しは失敗します。有効なmaxAttempts
範囲は 1 から 2,147,483,647 (32 ビット整数) で、これは Kubernetes のbackOffLimit
構成設定でサポートされている範囲です。詳細については、Kubernetes ドキュメントの「Pod 失敗のバックオフポリシー」を参照してください。 maxAttempts
値が無効な場合、以下のエラーメッセージが返されます。{ "message": "Retry policy configuration's parameter value of maxAttempts is invalid" }
ジョブの再試行ポリシーステータスの取得
ListJobRuns
および DescribeJobRun
API を使用して、ジョブの再試行のステータスを表示できます。再試行ポリシー設定が有効になっているジョブをリクエストすると、ListJobRun
および DescribeJobRun
レスポンスには、RetryPolicyExecution
フィールドの再試行ポリシーのステータスが含まれます。さらに、DescribeJobRun
レスポンスにはジョブの StartJobRun
リクエストに入力された RetryPolicyConfiguration
が含まれます。
レスポンス例
これらのフィールドは、以下の「再試行ポリシー設定値」で説明するように、ジョブで再試行ポリシーが無効になっている場合は表示されません。
再試行ポリシーを使用してジョブをモニタリングする
再試行ポリシーを有効にすると、作成されたジョブドライバーごとに 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 でジョブをモニタリングする」を参照してください。
ドライバーとエグゼキュター用のログを検索する
ドライバーポッド名は形式 spark-<job
id>-driver-<random-suffix>
に従います。ドライバーが生成するエグゼキューターポッド名にも同じ random-suffix
が追加されます。この random-suffix
を使用すると、ドライバーとそれに関連するエグゼキューターのログを検索できます。random-suffix
は、そのジョブの再試行ポリシーが有効になっている場合にのみ存在します。それ以外の場合は、random-suffix
は存在しません。
ログ記録用のモニタリング設定を使用してジョブを設定する方法の詳細については、「Spark アプリケーションの実行」を参照してください。