2016-06-28 150 views
0

这是非常初学者的问题,但我无法找到答案。 mapreduce程序花费的实际时间是多少?
它是“完成”的时间,如下面的第一个链接所示。第二个链接上显示的CPU时间是多少。正如你所看到的,CPU花费的时间比“完成”时间少得多,因此需要花费整个代码的运行时间。花在CPU上的时间,“完成时间”和mapreduce程序花费的实际时间是否有相关性?如何计算mapreduce程序的运行时间?

First Snapshot
Second Snapshot

回答

0

结束时间是从开始的过程中所采取的程序时,它终于返回。在此期间,进程不需要消耗任何CPU周期。它可以通过进程调度程序进行切换来执行其他操作,并且程序可能处于空闲状态(等待某个信号/标志或仅完成分配给它的CPU时间片)。

因此,CPU时间+空闲时间=完成时间。 (很多)

在驱动程序类中,除了运行mapreduce作业外,还运行了很多其他代码。你应该真正看到的是,mapreduce作业处理你设置的运行数据需要多少时间。因此,如果您希望估计某些数据量所花费的时间(取决于处理能力 - ResourceManager可用的虚拟内核和由ResourceManager管理的内存),您应该查看以下数据:第二个图像。同样,对于固定的数据大小您的mapreduce作业并不总是具有相同的结束时间(如在image-1中),它会随着资源的可用性而变化。更少的资源意味着更多的空闲时间。但是对于给定的固定数据量,image-2(CPU时间)的统计数据应该保持不变。

映射器和减速器的总和是CPU总时间。他们是平等的。 CPU时间是mapreduce应用程序运行所花费的时间。 mapreduce应用程序由 - Mapper和Reducer组成。依次Mapper具有读取输入文件(包括记录)和通过映射函数循环每条记录的任务。之后它有组合​​器和分区器。然后这些数据进入缩小阶段,每个分区(根据映射输出键值进行分区)通过reduce函数循环。 reduce函数返回最终输出。在此之前,减少也洗牌和排序。所以,你看到的CPU时间就是上述整个过程。

+0

感谢您的回答。我必须找到我的mapreduce代码的运行时间。那么我认为哪个时间显示为总代码运行时间。 – user3464093

+0

总代码运行时间 - 从哪里到哪里?从主函数(驱动程序类)运行到结束,直到它返回或运行应用程序的纱线内? – ViKiG

+0

我通过制作jar文件运行mapreduce代码,然后输入命令hadoop jar。一段时间后,它以hdfs文件格式输出。因此,我想了解运行jar文件和获取输出之间所经过的时间 – user3464093