ご迷惑おかけして申し訳ありません。
Dataflow は VM インスタンスを起動し、それらの VM でエージェントを起動します。これらのエージェントは、コードの実行 (例: ParDo のデータの読み取りと書き込み) という面倒な作業を行います。
このエラーは、エージェントが作業を要求していないためにジョブが失敗したことを示しています。その結果、サービスはジョブを失敗としてマークしました。これは、データを処理するエージェントが存在しなかったため、処理がまったく進んでいないためです。
そのため、エージェントの起動プロセスのどこで問題が発生したかを突き止める必要があります。
最初に確認することは、VM が実際に起動したかどうかです。ジョブを実行すると、プロジェクトで作成された VM が表示されますか? VM が起動するまでに 1 ~ 2 分かかる場合がありますが、ランナーが「ワーカー プールのセットアップを開始しています」というメッセージを出力した直後に表示されるはずです。VM には次のような名前を付ける必要があります。
<PREFIX-OF-JOB-NAME>-<TIMESTAMP>-<random hexadecimal number>-<instance number>
GCE 名の制限を超えないようにするために、ジョブ名のプレフィックスのみが使用されます。
VM が起動した場合、次に行うことは、ワーカー ログを調べて、エージェントの起動の問題を示すエラーを探すことです。
ログにアクセスする最も簡単な方法は、UI を使用することです。Google Cloud Console に移動し、左側のフレームで [Dataflow] オプションを選択します。ジョブのリストが表示されます。該当するジョブをクリックできます。これにより、ジョブのグラフが表示されます。右側に「ログを表示」ボタンが表示されます。それをクリックしてください。ログをナビゲートするための UI が表示され、エラーを探すことができます。
2 つ目のオプションは、GCS でログを探すことです。探す場所は次のとおりです。
gs://PATH TO YOUR STAGING DIRECTORY/logs/JOB-ID/VM-ID/LOG-FILE
複数のログ ファイルが表示される場合があります。私たちが最も興味を持っているのは、「start_java_worker」で始まるものです。そのログ ファイルが存在しない場合、ワーカーは実際にファイルをアップロードするのに十分な進行を遂げていません。または、ログ ファイルをアップロードする際に権限の問題が発生した可能性があります。
その場合の最善の方法は、VM が破棄される前に、VM の 1 つに SSH で接続することです。ジョブが失敗して VM が削除されるまで、約 15 分かかります。
VM にログインすると、すべてのログが表示されます。
/var/log/dataflow/...
この時点で最も重要なログは次のとおりです。
/var/log/dataflow/taskrunner/harness/start_java_worker-SOME ID.log
VM で実行されるコードの開始に問題がある場合は、そのログが教えてくれます。そのログとその他のログから、ワーカーで実行されているコードが Dataflow にアクセスできなくなる権限の問題があるかどうかもわかります。
ご覧いただき、何かありましたらお知らせください。