このページでは、Dataproc ジョブの送信、実行、および完了に伴う一連の手順を示します。ジョブの抑制とデバッグについても説明します。
Dataproc ジョブフロー
- ユーザーが Dataproc にジョブを送信します。
- JobStatus.State は
PENDINGとマークされます。
- JobStatus.State は
- ジョブは、
dataprocdataproc- エージェントによって取得されるまで待機します。
- ジョブが取得されると、JobStatus.State は
RUNNINGとマークされます。 - エージェントの障害や Compute Engine ネットワークの障害などが原因でジョブが取得されない場合、そのジョブは
ERRORとマークされます。
- ジョブが取得されると、JobStatus.State は
- エージェントは、ジョブを取得すると、Dataproc クラスタのマスターノード上にドライバを開始するために使用可能なリソースが十分にあることを確認します。
- 十分なリソースが利用可能でない場合、ジョブの遅延が発生します(ジョブが抑制されます)。JobStatus.Substate はジョブを
QUEUEDで表示し、Job.JobStatus.details は遅延の原因に関する情報を提供します。
- 十分なリソースが利用可能でない場合、ジョブの遅延が発生します(ジョブが抑制されます)。JobStatus.Substate はジョブを
- 十分なリソースが利用可能な場合、
dataprocエージェントはジョブドライバのプロセスを開始します。- この段階では、通常、Apache Hadoop YARN で実行されているアプリケーションが 1 つ以上あります。ただし、ドライバが Cloud Storage ディレクトリのスキャンやその他の起動ジョブタスクの実行を終了するまで、Yarn アプリケーションが開始されないことがあります。
dataprocエージェントは、ジョブの進捗状況、クラスタの指標、ジョブに関連付けられた Yarn アプリケーションの最新情報を Dataproc に定期的に送信します(ジョブのモニタリングとデバッグを参照)。- Yarn アプリケーションが完了します。
- ドライバがコレクションの実体化などのジョブ完了タスクを行っている間、ジョブは引き続き
RUNNINGと報告されます。 - メインスレッドで処理または捕捉されない障害があると、ドライバがゾンビ状態(障害の原因に関する情報が提供されないまま、
RUNNINGとマークされる)になることがあります。
- ドライバがコレクションの実体化などのジョブ完了タスクを行っている間、ジョブは引き続き
- ドライバが終了します。
dataprocエージェントにより Dataproc に完了が報告されます。- Dataproc によりジョブが
DONEと報告されます。
- Dataproc によりジョブが
ジョブの同時実行
Dataproc で同時実行されるジョブの最大数は、クラスタ作成時に dataproc:dataproc.scheduler.max-concurrent-jobs クラスタ プロパティで構成できます。このプロパティ値を設定しない場合は、同時実行ジョブの上限は max((masterMemoryMb - 3584) / masterMemoryMbPerJob, 5) として計算されます。masterMemoryMb は、マスター VM のマシンタイプによって決まります。masterMemoryMbPerJob はデフォルトでは 1024 ですが、クラスタ作成時に dataproc:dataproc.scheduler.driver-size-mb クラスタ プロパティで構成可能です。
次のステップ
- ジョブのトラブルシューティングを確認する