MapReduce

分布式计算的原理

mapreduce分为两个阶段:程序在每个节点上的计算和最终结果的汇总。

map阶段:

1)处理的数据比较大,而且数据都是分布存储在datanode中。

2)由于数据量比较大,而java程序比较小,所以将程序放到每一个数据节点上执行会节省数据传输的时间。而且可以实现并行计算,提高效率。

reduce阶段:

3)map阶段的数据需要汇总起来,做着部分工作的就是reduce。在其中一个节点上添加一个reduce程序,所有map程序的结果都汇总到这个节点上,由reduce程序进行处理。

4)由于map可能会比较多,一个reduce压力比较大,所以需要多加几个reduce,实现reduce的分布式,减少reduce的压力。

5)由于reduce有多个,所以又出现了节点上的map不知道汇总到哪个上的问题。所以就使用分区。分区的原则是每个reduce处理的数据基本一样

原文地址:https://www.cnblogs.com/tzq9308/p/5096809.html