Map-Reduce ジョブのタイミング結果がわかりません。たとえば、実行中のジョブでは、ジョブ トラッカーから次の結果が得られます。
終了時間: 1 分 39 秒
CPU 使用時間 (ミリ秒) 150,460 152,030 302,490
費やされた CPU 時間 (ミリ秒) のエントリは、それぞれ Map、Reduce、および Total です。しかし、「消費されたCPU時間」はどのように測定され、それは何を意味するのでしょうか? これは、ジョブに割り当てられたマッパーとリデューサーのそれぞれで費やされた合計累積時間ですか? シャッフル、ソート、パーティションなどの時間など、フレームワークから他の時間を測定することはできますか? もしそうなら、どのように?
私を悩ませている2番目の質問。ドライバークラスで getTime() を使用することを提案する投稿 ( Link1 、 Link2 ) をいくつか見ました。
long start = new Date().getTime();
boolean status = job.waitForCompletion(true);
long end = new Date().getTime();
System.out.println("Job took "+(end-start) + "milliseconds");
とにかく、これは Job Tracker の出力の最初のエントリが提供することを行っていませんか? これは必要ですか?特に IO 時間、ノードごと/ステージごとの計算時間を計りたい場合に、hadoop ジョブの時間を計る最良の方法は何ですか?