2012-02-20 15 views
0

Hadoopスケジューラを作成しています。私のスケジューリングでは、Map/ReduceタスクごとにCPU時間を見つける必要があります。HadoopでMap/Reduceタスクを実行するCPU時間を調べる方法

私がいることを知っている:TaskInProgressクラスは、プロセスが開始し、終了時に壁時計の時間ですexecStartTimeとexecFinishTime値を維持するが、彼らは正確にタスクが消費するCPU時間を示すものではありません

  • 各タスクは新しいJVMで実行され、OperatingSystemMXBeanを使用できます。 getProcessCpuTime()メソッドを使用していますが、このメソッドの説明からもわかります。「Java仮想マシンが実行されているプロセスで使用されているCPU時間をナノ秒単位で返します。これが私が望むものなのかどうかは完全にはっきりしていません。

答えて

0

ただ、後世のために、私はライン572

mergedCmd.append("exec setsid 'time' "); // add 'time' 

CPU上のsrc/mapred /組織/ apacheの/ Hadoopの/ mapred/TaskLog.java(Hadoopの0.20.203)の変化をすることによって、この問題を解決するにはログは/ logs/userlogs/JOBID/TASKID/stderrに書き込まれます。私はまた、累積CPU時間を享受するためのスクリプトを書いたジョブを実行する前にhttps://gist.github.com/1984365 を、あなたはあなたが確認する必要があります:

rm -rf logs/userlogs/* 

スクリプトが動作するように。

0

CPU使用率/ IDLE時間、スワップ使用率、メモリ使用率などのリソースメトリックを記録するライブラリを使用しています。

http://code.google.com/p/hadoop-toolkit/

あなたはパッチを抽出し、20.2タグのバージョンにそれを適用する必要があります。

I am not entirely clear if this is what I want. 

このメソッドが壁時計の時刻も返すことは間違いありません。

関連する問題