デフォルトでは、Dataproc のジョブは失敗したときに自動的に再実行しません。オプションの設定を使用することで、失敗したときに再実行するようにジョブを設定できます。再実行するジョブを設定するときに、1 時間あたりの最大再試行回数(最大値は 1 時間あたり 10 回)または再試行の最大回数(最大値は合計 240)を指定します(あるいは、その両方を指定します)。
ジョブを再実行することで、メモリ不足の問題や、Compute Engine 仮想マシンの予期しない再起動など、一般的な種類のジョブの失敗が軽減されます。再実行可能なジョブは、実行時間の長いジョブやストリーミング ジョブに特に役に立ちます。たとえば、Dataproc クラスタで実行する Spark ストリーミング ジョブを再実行して、ストリーミング ジョブの復元力を確認できます。
再実行可能なジョブのセマンティクス
ジョブの成功または失敗の報告には、次のセマンティクスが適用されます。
- ドライバがコード
0で終了した場合、ジョブは成功と報告されます。 - 次の場合、ジョブは「失敗」と報告されます。
- ドライバが 10 分間に 5 回以上、ゼロ以外のコードで終了した場合。
- ドライバがゼロ以外のコードで終了した回数が、
max_failures_per_hourまたはmax_failures_totalの設定を超えた場合。
- ドライバがゼロ以外のコードで終了し、スラッシングが発生しておらず、回数が
max_failures_per_hourおよびmax_failures_totalの設定の範囲内である場合、ジョブは再実行されます。
ジョブの設計に関する考慮事項
- 再実行を適切に処理するようにジョブを設計します。たとえば、ジョブがディレクトリに書き込む場合、ジョブの再実行時にディレクトリが存在する可能性を考慮します。
- Apache Spark ストリーミング ジョブは障害発生後にチェックポイントを再実行できますが、これらのジョブは Yarn ステータスを報告しません。
再実行可能なジョブを作成して使用する
gcloud CLI の gcloud コマンドライン ツール、Dataproc REST API、またはGoogle Cloud consoleを使用してジョブを送信するときに、ジョブを 1 時間あたり最大何回再実行できるか、および最大再試行回数を指定できます。
例: ジョブを最大 10 回再、1 時間に 5 回まで再試行するには、max-failures-total を 10、max-failures-per-hour を 5 に設定します。
gcloud
ジョブを 1 時間あたり再実行できる最大回数(最大再試行回数は 10 回)または合計再試行の最大回数(最大値は 240 回)(あるいはその両方)を、--max-failures-per-hour フラグと --max-failures-total フラグをそれぞれ使用して指定します。
gcloud dataproc jobs submit job type \ --region=region \ --max-failures-per-hour=number \ --max-failures-total=number \ ... other args
REST API
Job.JobScheduling maxFailuresPerHour または maxFailuresTotal(あるいはその両方)のフィールドを使用して、ジョブを再実行できる最大回数(最大再試行回数は 1 時間あたり 10 回)と、再試行の最大回数(最大再試行回数は 240 回)を指定します。
例
POST /v1/projects/project-id/regions/us-central1/jobs:submit/
{
"projectId": "project-id",
"job": {
"placement": {
"clusterName": "example-cluster"
},
"reference": {
"jobId": "cea7ae0b...."
},
"sparkJob": {
"args": [
"1000"
],
"mainClass": "org.apache.spark.examples.SparkPi",
"jarFileUris": [
"file:///usr/lib/spark/examples/jars/spark-examples.jar"
]
},
"scheduling": {
"maxFailuresPerHour": 5
"maxFailuresTotal": 10
}
}
}
コンソール
再実行可能なジョブを送信するには、Dataproc の [ジョブを送信] ページで [1 時間あたりの最大再実行回数] を指定します(最大値は 1 時間あたり 10 回)。 Google Cloud コンソールでは、最大合計再起動回数の設定は使用できません。