mapreduce—为什么当reducer达到一定数量时,hadoop作业的时间会显著减少

nafvub8i  于 2021-06-02  发布在  Hadoop
关注(0)|答案(2)|浏览(299)

我测试了一个基于mapreduce的算法的可伸缩性。它看起来很好(时间随着还原剂的增加而减少)。但是当reducer达到一定数量(在hadoop集群中是30个)时,作业时间总是显著减少,而不是逐渐减少。可能的原因是什么?
关于我的hadoop工作:(1)光照图阶段。只有几百行输入。每行将生成大约5000个键值对。整个Map阶段不会超过2分钟(2) 重还原阶段。reduce函数中的每个键都将匹配1-2千个值。而reduce阶段的算法计算量很大。一般来说,还原阶段需要大约30分钟才能完成。
时间性能图:

798qvoo8

798qvoo81#

如果有足够数量的 reducers 每个reduce阶段之间的可用网络io(传输中间结果)减少。
由于网络io通常是大多数map-reduce程序的瓶颈。所需网络io的减少将带来显著的改善。

yacmzcpb

yacmzcpb2#

应该是因为键值对的数量太多。在特定的减速机数量下,它们平均分配到减速机上,这导致所有减速机几乎同时执行任务。否则,合路机可能会继续等待1或2个重载减速机完成任务。

相关问题