デフォルトでは、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 ステータスを報告しません。
再実行可能なジョブの作成と使用
gcloudgcloud コマンドライン ツール、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.JobSchedulingmaxFailuresPerHour
または 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 } } }
Console
再実行可能なジョブを送信するには、Dataproc の [ジョブを送信] ページで 1 時間あたりの最大再実行回数を指定します(最大値は 1 時間あたり 10 回)。現在、Google Cloud コンソールでは最大合計再起動回数の設定は使用できません。