运行多个" light" mapreduce或单个" heavy" MapReduce的

时间:2017-03-05 13:11:07

标签: hadoop mapreduce emr

我正在编写一个可在AWS EMR上运行的mapreduce程序 我的程序计算google ngram语料库中的概率 我想知道运行一次处理所有计算的mapreduce和多次处理一次计算的mapreduce之间是否存在差异。
两者都是在不使用任何数据结构(数组,列表......)的情况下完成的 效率方面有区别吗?或网络通讯?
两者都以相同的方式完全相同,我只将计算器与减速器的工作分开。

1 个答案:

答案 0 :(得分:0)

是的,它们之间会有区别,但差异的大小取决于你的地图缩减程序。

差异的原因是当您运行多个光照贴图减少程序时,当启动需要分配应用程序主机必须进行通信的容器时,将会开始执行多个map和reducer,因为每个map减少程序在资源管理器和节点管理器之间来回,生成新的日志文件,需要名称节点和数据节点之间的网络通信,类似地还有许多其他的头部。因此,如果您的程序不是那么大,那么单个重图减少会比各种光图减少更好。

但是如果你的单个map reducer程序太大而复杂,以至于它会导致JVM和内存堵塞(除非你的集群硬件太小,否则这种情况极不可能),那么多个小地图缩减更为可行。 / p>

从你的问题我有一个直觉,你的地图缩小不是那么大,所以我建议你继续单重地图缩小。