我本机使用Hadoop编写MapReduce作业,我想测量作业的执行时间,并使用Date收集它(我知道在UI中我也可以看到执行时间)。 为了找到正确的执行时间,我将该作业运行了3次(使用一个hadoop jar和一个调用该作业的for循环),并且得到了非常奇怪的结果。
似乎第一次运行的时间比其他时间短得多,并且我得到相同的输出(我知道容器的位置可能是更改执行时间的原因,但是我不确定为什么第一次运行总是最快的)。 我正在使用的代码示例
public int run (String[] args ) throws Exception {
Configuration conf = getConf();
conf.set(...)
.
.
.
for (int i = 0; i < 3; i++)
{
Job job =job.getInstance(conf, "OR-MR");
.
.
.
if (!job.waitForCompletion(true))
{
System.exit(1);
}
}//for
}//run
顺便说一句,如果我将作业运行了3次(每个hadoop命令一次)比执行时间快。
还有其他方法可以测量执行时间而无需手动运行3次吗?