不同数量的地图任务之间没有性能差异(1,2,4 ..)

时间:2013-11-28 04:53:08

标签: python hadoop

我是hadoop的新手,我正在测试不同数量的地图任务之间的性能差异并减少任务。 file size is about 5GB和hadoop已安装在4 core/8 core machine (hyper threading)上。

map和reduce是用python编写的,所以我按-D mapred.map.tasks=2指定地图任务的数量,并按-D mapred.reduce.tasks=2指定减少任务的数量。

问题

问题是结果没有显示不同数量的地图任务之间的任何性能差异。

结果

+----------+----------+----------+
|   map    |  reduce  |  time    |
+----------+----------+----------+
|    1     |    1     | 47m 09s  |
|    2     |    1     | 45m 35s  |
|    4     |    1     | 46m 30s  |
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|    1     |    2     | 38m 37s  |
|    2     |    2     | 39m 22s  |
|    4     |    2     | 39m 29s  |
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|    1     |    4     | 38m 18s  |
|    2     |    4     | 38m 48s  |
|    4     |    4     | 38m 23s  |
+----------+----------+----------+

似乎使用1个reduce任务和使用2个reduce任务之间存在一些微小的差异,但是当我更改map任务的数量时没有区别。这就是所有任务只在一个节点上执行,并且map任务没有并行运行?

可能导致这种情况的原因是什么?我很感激任何信息。

修改

我也尝试在mapred-site.xml中而不是在命令中指定这些值,但没有做任何更改。

1 个答案:

答案 0 :(得分:0)

选项mapred.map.tasks不是hadoop的指令but a hint,那么你是如何检查执行的实际地图任务数量的?执行作业时,您可以在task tracker中监视作业跟踪器中正在运行的作业以及正在运行的任务。此外,你可以在你的hadoop机器上ssh,并检查运行map / reduce任务,那些将是java进程。

您可以尝试在mapreduce.tasktracker.map.tasks.maximum中将mapred-site.xml设置为每个节点绑定的映射器,以查看并行执行的好处。

要获得更多性能监视器选项,您可能会选择安装Ganglia,另请参阅此博客条目:Monitoring Hadoop beyond Ganglia