为什么还原器比映射器获得更多的内存



为什么在Hadoop纱线内存配置中,还原器总是比映射器获得更多的内存?

示例:

mapreduce.map.memory.mb = 7
mapreduce.reduce.memory.mb = 14
mapreduce.map.java.opts = 0.8 * 7 = 5,6
mapreduce.reduce.java.opts = 0.8 * 2 * 7 = 11,2

为了概括纱线MRV2配置的建议,供应商将为他们遇到的常见用例提供内存建议,并在社区中进行了讨论。与其他任何人一样,在此建议中就是这种情况。

简而

但是,他们提出建议的原因是因为在MapReduce数据流中,我们有几个阶段:地图,复制,分类/合并,减少。映射者在分区的块中获取数据,然后使用地图方法对其进行过滤。此过滤器减少了输入中的数据量。

然后,此输出保存在HDFS中,并通过HTTP与还原共享。这要照顾地图和复制阶段。因此,如果您可以想象,我们将使用每个映射器使用与MR分区者指定的框架指定相同的内存要求。

现在,在合并阶段,还原器将此输出从复制阶段称为此输出,并分阶段合并。合并是在内存中完成的,典型应用程序将受益于增加的内存。由于此选项是可配置的,因此我们对MR框架中的还原器有更多的控制权,并且我们可能需要一个减少输出(对于总体而言),或者仅比MR确定为我们确定的映射器数量的数量少。建立了分区机制。无论哪种方式,我们都会收到类似于以下的输入(后洗牌)输入:(Key, List(Value))。该列表是我们汇总的内容,也是使记忆更高的另一个促成原因。

相关内容

  • 没有找到相关文章

最新更新