2012-07-30 4 views
6

Map-Reduceジョブのタイミング結果がわかりません。例えば、私が走っている仕事は、私にジョブトラッカーから次の結果を与えます。 HadoopジョブのCPU時間は何を意味しますか?

がで終了:

CPU時間を費やした(ミリ秒)CPU時間を費やした(MS)地図のためのもので150460の152030 302490

エントリ39sec、1mins、それぞれ削減し、合計。しかし、それでは「CPU時間の消費量」はどのように測定され、それが何を意味していますか?これは、ジョブに割り当てられたマッパーとレデューサーのそれぞれに費やされた合計累積時間ですか?シャッフル、ソート、パーティションなどの時間など、フレームワークから他の時間を測定することは可能ですか?もしそうなら、どうですか?

私を悩ます第2の質問。

long start = new Date().getTime(); 
boolean status = job.waitForCompletion(true); 
long end = new Date().getTime(); 
System.out.println("Job took "+(end-start) + "milliseconds"); 

この仕事トラッカー出力の最初のエントリはとにかく提供して何をしていないです:私は、ドライバクラスのgetTime()を使用することをお勧めここではいくつかの記事(Link1Link2)を見たことがありますか?これは必要ですか?私がIO時間を計算したい時、ノード/ 1ステージあたりの計算時間を計算したいとき、特にハープ・ジョブの時間を計測する最良の方法は何ですか?

+0

異なる投稿に異なる質問を付ける必要があります –

答えて

14

マップフェーズは、レコードリーダー、マップ、コンバイナ、およびパーティショナで構成されます。

縮小フェーズは、シャッフル、ソート、縮小、出力で構成されます。

表示されているCPU時間は、マップフェーズ全体と縮小フェーズ全体です。機能自体だけではありません。これは地図の機能と還元機能を持っているため、マップのフェーズの部分だけであり、のフェーズを減らすため、混乱する用語です。これは、クラスタ内のすべてのノードにわたる合計CPU時間です。

CPU時間はリアルタイムで大きく異なっています。 CPU時間は、何かがCPUに費やされた時間ですが、リアルタイムはあなたと私が人間として経験するものです。これについて考えてみましょう。同一のデータを同じノードで実行しているが、1つの20ノードクラスタ、次に200ノードクラスタで実行しているとします。全体的に、同じ量のCPU時間が両方のクラスタで使用されますが、200ノードのクラスタはリアルタイムで10倍高速に実行されます。 CPU時間は、同時に多数のジョブが実行されている共有システムを使用する場合に役立ちます。

各段階でCPU時間を取得する方法がわかりません。日付タイマーを使用することはおそらくあなたが探しているものではありません。

+0

ありがとうございました。これは非常に便利でした。 – Alps

+0

@donaldminer CPU時間は、実際には経験した時間と同じではありません。特に、ノード数を考慮する場合は特にそうです。しかし、CPU時間はあなたにエネルギー消費のより多くの洞察を与えます。私が理解する限り、CPU時間には、マッパーとレデューサーの両方のすべての部分が含まれています。 – Xaero182

+0

私のdistrubutedモードで私は見た - > MapReduce合計累積CPU時間:20分38秒680ミリ秒と合計MapReduce CPU時間を費やした:20分25秒980ミリ秒実際には、撮影時間:現実世界で47.769秒。これは、同じジョブを使用すると、シングルノードクラスタで20分かかりますか?それが正しければお勧めします! –