在hadoop中reduce阶段如何在map阶段之后工作

bprjcwpo  于 2021-05-29  发布在  Hadoop
关注(0)|答案(1)|浏览(532)

我正在阅读过去几周的hadoop框架,但我不能理解一个概念。也许这个问题是愚蠢的,如果是这样的话,我对此深表歉意。我的问题是假设我必须在一个太长的文件上创建一个单词计数程序,因此它分布在3个不同的数据节点上。现在,由于在所有三个datanode上运行的map阶段将创建一个键值对,然后将在所有三个datanode创建的所有map数据上执行合并。但现在我无法理解下一阶段是什么。意思是合并数据将如何分布在不同的reduced阶段,有多少reduce阶段将运行,有多少datanodes将运行reduce阶段。请澄清我的所有上述困惑,因为这我无法在hadoop中进一步移动。很抱歉问了个愚蠢的问题,如果是这样的话。谢谢您

jyztefdp

jyztefdp1#

每个map任务在处理其共享的输入后,根据 compateTo() Map出键类示例的方法实现(例如,有树不同的组产生a,b和c)。
当处理到达确定阶段时,每个reduce任务基于map任务产生的中间数据,仅传输它感兴趣的文件(考虑到它此时只对a组感兴趣,它将仅从实际生成这些类别文件的所有计算机传输属于组a的文件。
reducer对先前从执行map任务的机器传输的聚合数据执行自己的排序和合并(即,您有文件a.1、a.2和a.3,但由于每个map任务都是独立的,因此不能保证聚合数据的排序顺序,因此,排序现在应用于聚合的文件组)
reduce任务然后执行所需的处理并将结果写入最终位置。
对每个结果组重复此操作。

相关问题