如何计算mapreduce程序的运行时间?

时间:2016-06-28 11:58:30

标签: hadoop mapreduce

这是一个非常初学的问题,但我无法找到答案。 mapreduce程序实际花费的时间是多少? 它是“完成时间”,如下面的第一个链接所示。这个CPU时间是多少,如第二个链接所示。正如您所看到的,CPU花费的时间远远少于“完成时间”,因此需要花费的时间作为代码的总运行时间。 CPU时间花费,“完成”时间和mapreduce程序实际花费的时间之间是否有任何相关性?

First Snapshot
 Second Snapshot

1 个答案:

答案 0 :(得分:0)

完成时间是程序从您启动进程并最终返回时所用的时间。在此期间,进程不必占用任何CPU周期。它可以在进程调度程序之间切换以执行其他操作,并且您的程序可能处于空闲状态(等待一些信号/标志或者它只是完成了分配给它的CPU时间片段。)

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

在驱动程序类中,除了运行mapreduce作业外,还会运行许多其他代码。你应该看到的是,mapreduce工作花了多少时间来处理你设置它运行的数据。因此,如果您希望估算一定数量的数据所需的时间(取决于处理能力 - ResourceManager和内存可用的虚拟核心 - 也由{{1}}管理),您应该看第二张图片中给出的纱线统计数据。同样,对于固定的数据大小,mapreduce作业并不总是具有相同的完成时间(如图像1中所示),它将根据资源的可用性而变化。资源越少意味着闲置时间越长。但是对于给定的固定数据量,图像-2(CPU时间)中的统计数据应该保持不变。

映射器和reducer的总和是CPU的总时间。他们是平等的。 CPU时间是mapreduce应用程序运行所花费的时间。 mapreduce应用程序包括 - Mapper和Reducer。反过来,Mapper的任务就是读取输入文件(包含记录)并通过map函数循环每条记录。之后它有合并器和分区器。然后,该数据进入reduce阶段,其中每个分区(根据映射输出键值分区)通过reduce函数循环。 reduce函数返回最终输出。在此之前,reduce还可以进行随机播放和排序。因此,您看到的CPU时间是针对上述整个过程的。