このドキュメントでは、一般的なジョブ エラー メッセージを一覧表示し、Dataproc ジョブのトラブルシューティングに役立つジョブのモニタリングとデバッグの情報を提供します。
一般的なジョブのエラー メッセージ
タスクが取得されませんでした
これは、マスターノードの Dataproc エージェントがコントロール プレーンからタスクを取得できなかったことを示します。これは、多くの場合、メモリ不足(OOM)またはネットワークの問題が原因で発生します。 以前はジョブが正常に実行されており、その後ネットワーク構成を変更していない場合、OOM が原因である可能性が高いです。多くの場合、多数の同時実行ジョブ、またはドライバが大量のメモリを消費するジョブ(大規模なデータセットをメモリに読み込むジョブなど)を送信すると、このような状態になります。
マスターノードにアクティブなエージェントが見つかりませんでした
これは、マスターノードの Dataproc エージェントがアクティブではなく、新しいジョブを受け入れることができないことを示します。これは、多くの場合、メモリ不足(OOM)やネットワークの問題、またはマスターノード VM が異常な場合に発生します。以前はジョブが正常に実行されており、その後ネットワーク構成を変更していない場合、OOM が原因である可能性が高いです。多くの場合、多数の同時実行ジョブ、またはドライバが大量のメモリを消費するジョブ(大規模なデータセットをメモリに読み込むジョブなど)を送信すると、このような状態になります。
問題を解決するには、次の操作をお試しください。
- ジョブを再起動します。
- SSH を使用してクラスタ マスターノードに接続し、メモリを最も多く使用しているジョブまたはその他のリソースを特定します。
- マスターノードにログインできない場合は、シリアルポート(コンソール)ログを確認します。   
- syslog やその他のデータを含む診断バンドルを生成します。 
タスクが見つかりませんでした
このエラーは、ジョブの実行中にクラスタが削除されたことを示します。次の操作を行うと、削除を実行したプリンシパルを特定し、ジョブの実行中にクラスタの削除が発生したことを確認できます。
- Dataproc 監査ログを表示して、削除オペレーションを実行したプリンシパルを特定します。 
- Logging または gcloud CLI を使用して、YARN アプリケーションの最後の既知の状態が RUNNING であることを確認します。 - Logging で次のフィルタを使用します。
 - resource.type="cloud_dataproc_cluster" resource.labels.cluster_name="CLUSTER_NAME" resource.labels.cluster_uuid="CLUSTER_UUID" "YARN_APPLICATION_ID State change from" - gcloud dataproc jobs describe job-id --region=REGIONを実行し、出力で- yarnApplications: > STATEを確認します。
 
- クラスタを削除したプリンシパルが Dataproc サービス エージェント サービス アカウントである場合は、ジョブの所要時間よりも短い自動削除時間でクラスタが構成されているかどうかを確認します。 
Task not found エラーを回避するには、自動化を使用して、実行中のすべてのジョブが完了する前にクラスタが削除されないようにします。
デバイスに空き領域がない
Dataproc は、HDFS とスクラッチ データをディスクに書き込みます。このエラー メッセージは、十分なディスク容量があるクラスタが作成されたことを示します。このエラーを分析して回避するには:
- Google Cloud コンソールの [クラスタの詳細] ページの [構成] タブで、クラスタのプライマリ ディスクサイズを確認します。推奨される最小ディスクサイズは、 - n1-standard-4マシンタイプを使用するクラスタの場合は- 1000 GB、- n1-standard-32マシンタイプを使用するクラスタの場合は- 2 TBです。
- クラスタのディスクサイズが推奨サイズより小さい場合は、推奨ディスクサイズ以上でクラスタを再作成します。 
- ディスクサイズが推奨サイズ以上の場合は、SSH を使用してクラスタ マスター VM に接続し、マスター VM で - df -hを実行してディスクの使用率を確認し、ディスク容量を追加する必要があるかどうかを判断します。
ジョブのモニタリングとデバッグ
Google Cloud CLI、Dataproc REST API、 Google Cloud コンソールを使用して、Dataproc ジョブを分析しデバッグします。
gcloud CLI
実行中のジョブの状態を調査するには:
gcloud dataproc jobs describe job-id \ --region=region
ジョブドライバ出力を表示するには、ジョブ出力を表示するをご覧ください。
REST API
jobs.get を呼び出して、ジョブの JobStatus.State、JobStatus.Substate、JobStatus details、YarnApplication の各フィールドを調べます。
コンソール
ジョブドライバ出力を表示するには、ジョブ出力を表示するをご覧ください。
Logging で dataproc エージェント ログを表示するには、ログ エクスプローラーのクラスタ セレクタから [Dataproc クラスタ] → [クラスタ名] → [クラスタの UUID] を選択します。
 
   次にログセレクタを使用して google.dataproc.agent ログを選択します。
 
   Logging でジョブログを表示する
ジョブが失敗した場合、Logging のジョブログにアクセスできます。
誰がジョブを送信したかを判別する
ジョブの詳細を検索すると、submittedBy フィールドに、誰がジョブを送信したかが表示されます。たとえば、このジョブ出力には、user@domain がクラスタにサンプル ジョブを送信したことが示されています。
... placement: clusterName: cluster-name clusterUuid: cluster-uuid reference: jobId: job-uuid projectId: project status: state: DONE stateStartTime: '2018-11-01T00:53:37.599Z' statusHistory: - state: PENDING stateStartTime: '2018-11-01T00:33:41.387Z' - state: SETUP_DONE stateStartTime: '2018-11-01T00:33:41.765Z' - details: Agent reported job success state: RUNNING stateStartTime: '2018-11-01T00:33:42.146Z' submittedBy: user@domain