如何在hadoop

时间:2017-08-15 10:07:23

标签: java hadoop mapreduce hdfs

我正在阅读过去几周的hadoop框架,但我无法理解一个概念。可能这个问题很愚蠢,如果不是那么抱歉。 我的问题是假设我必须在一个太长的文件上创建一个字数统计程序,因此它分布在3个不同的数据节点上。现在,由于在所有三个数据节点上运行的映射阶段将创建为键值对,之后将对所有三个数据节点创建的所有地图数据执行合并。但现在我无法理解下一阶段是什么。意味着合并数据将如何沿着不同的减少阶段分布,以及将运行多少减少阶段以及将运行多少数据节点减少阶段。请清除我以上的所有混淆,因为这样我无法在hadoop中进一步移动。 如果是这样的话,抱歉这是一个愚蠢的问题。 谢谢

1 个答案:

答案 0 :(得分:0)

  1. 处理其输入分享后的每个map任务都根据map out key类实例的compateTo()方法实现进行排序并合并数据。 (例如,有树不同的组产生A,B和C)。
  2. 当处理到达确定的阶段时,每个reduce任务,基于map任务产生的中间数据,只传输它感兴趣的文件(考虑到它目前只对A组感兴趣) ,它只会从实际生成这些类别文件的所有机器上传输属于A组的文件。)
  3. reducer对先前从执行map任务的机器传输的聚合数据执行自己的排序和合并(即你有文件A.1,A.2和A.3,但是因为每个map任务是独立的排序顺序,聚合数据不能保证,所以排序现在应用于聚合的文件组)
  4. 然后,reduce任务执行所需的处理并将结果写入最终位置。
  5. 对每个结果组重复该操作。