标签:
1)处理的数据比较大,而且数据都是分布存储在datanode中。
2)由于数据量比较大,而java程序比较小,所以将程序放到每一个数据节点上执行会节省数据传输的时间。而且可以实现并行计算,提高效率。
mapreduce分为两个阶段:程序在每个节点上的计算和最终结果的汇总。
上面两步是map阶段
3)map阶段的数据需要汇总起来,做着部分工作的就是reduce。在其中一个节点上添加一个reduce程序,所有map程序的结构都汇总到这个节点上,由reduce程序进行处理。
4)由于map可能会比较多,一个reduce压力比较大,所以需要多加几个reduce,实现reduce的分布式,减少一个reduce的压力。
5)由于reduce有多个,所以又出现了节点上的map不知道汇总到哪个上的问题。所以就出现了分区。分区的原则是每个reduce处理的数据基本一样
标签:
原文地址:http://www.cnblogs.com/tzq9308/p/5096809.html