2011-12-27 13 views
0

クラスRunningJobには、IOExceptionをスローするいくつかのメソッドがあります(おそらく、Hadoopへの接続に失敗したときでしょうか?)今見ているのはisComplete()です。Hadoop:RunningJob.isComplete()の例外処理

このようなエラーを処理する適切な方法は何ですか?私は仕事が死んだと仮定すべきですか?私は待ってからもう一度やり直すべきですか?この時点で私のアプリケーションが死んでしまうのは、Hadoopや他の場所で多数のジョブを管理しているため、できるだけ堅牢である必要があるため、オプションではありません。

答えて

1

私の答えはコメントには長すぎます。申し訳ありませんが、あなたの質問に直接答えるわけではありません。私は主に私の反応で経験から話をしています。

このレベルまで例外がスローされた場合、ジョブが終了することはほぼ想定できます。私は、もう一度試行するか、またはスローされた例外に応答して自動的に問題を修正しようとしていることが分かりません。間違ってしまうことが多すぎる。

通常、正常に動作するジョブが失敗すると、修正が必要なシステムに何らかの不具合が発生します。おそらくNameNodeが死んでいるかもしれません。おそらく、スイッチは愚かで、誰が知っていますか?残念なことに、これらの問題は人間の注意を必要とします。

私の意見では、何かのコーナーケースを考慮する代わりに、あなたの仕事が失敗したらすぐに知ることができるアラートインフラストラクチャ(通常は電子メール)を構築することに開発努力がうまくいきます。

クラスタとジョブによくある問題が見つかったら、アプリケーションに例外処理を組み込むことができます。私はそれがすべてを前もって説明するのに貴重な時間だとは思わない。

+0

これはかなり古い話題ですが、ジョブが送信された後、それが実際に実行を開始する前に、記録のために、例外もisComplete()の呼び出しによってスローされる可能性があります。そのような場合、例外はジョブが失敗することを意味しません。このケースの処理方法を知るには、isComplete()のソースコードを調べる必要があります。 – PNS