哪个首先运行,组合器或分区器在MapReduce作业中



我很困惑,因为我找到了两个答案。

1(根据Hadoop权威指南 - 第3版,第6章 - 地图边说:"在写入磁盘之前,线程首先将数据划分为对应于最终将发送到的化简器的分区。在每个分区中,后台线程按键执行内存中排序,如果有组合器函数,则在排序的输出上运行。

2(雅虎开发人员教程(Yahoo教程(说Combiner在分区程序之前运行。

谁能澄清哪个先运行。

Map Reduce 作业可能包含其中一个或所有这些阶段

  1. 地图

  2. 随机播放和排序

  3. 减少

Partitioner适合第二阶段和第三阶段

您可以访问此链接了解更多详情。

在阅读了相关的SE问题和文章后,

哪个先运行:分区程序还是合并器?

谁将有机会先执行,合路器还是分区器?

https://sreejithrpillai.wordpress.com/2014/11/24/implementing-partitioners-and-combiners-for-mapreduce/

我们可以看到意见分歧。

但从逻辑上讲,我觉得

  1. 映射器将输出写入内存中的圆形环形缓冲区
  2. 如果化简器数量大于 1 并且分区器已到位,则映射器输出将被分区
  3. 缓冲区内存已满后,输出将溢出到磁盘
  4. 根据Hadoop权威指南"在每个分区内,后台线程按键执行内存中排序,如果有组合器函数,则在排序的输出上运行">

这意味着分区程序应该首先运行,合并器必须在每个分区中的输出数据上运行。

相关内容

  • 没有找到相关文章

最新更新