0

私のアプリケーションには、一連の 5 つの Hadoop ジョブがあり、次を使用して順番にチェーンされています。

Job.waitForCompletion(false)

今、Hadoopのドキュメントは明確に述べています

...仕事が確実に完了するようにする責任
(成功/失敗) はすべてクライアントにある

ここで、ジョブ クライアント プログラムがクラッシュした場合、ジョブ クライアント プログラムを再起動したときに、クラッシュした時点でジョブ クライアント プログラムを再開できるようにするにはどうすればよいですか? JobTracker を照会して特定のジョブへのハンドルを取得し、その後そのジョブのステータスを確認する方法はありますか?

4

1 に答える 1

0

クライアント自体がクラッシュした場合は、次のアプローチを試すことができます。

Hadoop は、クラスタ内で現在実行中のジョブを追跡するために使用できる JobClient を提供します。したがって、クライアントが再起動すると、JobClient の次のメソッドを使用できます。

  • jobsToComplete() - 完了も失敗もしていないジョブを取得します
  • jobsToComplete() - 完了も失敗もしていないジョブを取得します
  • getAllJobs() - 送信されたジョブを取得します。
  • getClusterStatus() - Map-Reduce クラスターに関するステータス情報を取得します。
  • submitJob(JobConf job) - ジョブが失敗した場合、MR システムにジョブを送信します。
于 2012-05-30T08:00:21.323 に答える