What's MapReduce?

MapReduce,包括两个单词:Map&Reduce,是对大规模数据处理过程中的两个关键阶段,Map阶段将任务分解成多个任务并行完成,Reduce阶段把各部分的成果汇总回来。整个数据处理过程简化如下图五部分。


在Mapper处理过程中,为了减少最后Reduce的工作量,map函数结束之后还有一个被称为本地Reduce的combine过程,功能跟Reduce类似,对Map的结果(中间键值对)进行了汇总处理;除此之外还有个叫shaffle的过程,本意是洗牌,功能是把map结果按照Key值分为R分,对应R个Reducer,这个过程一般使用哈希算法,即Hash(key) mod R。

各个Mapper的输出结果写入本地磁盘的不同分区(待整个MapReduce完成之后,本地磁盘中Mapper产生的中间数据可以直接删除),Reducer需要从Mapper获取自己对应的Key值区间的中间结果,执行Reduce,得到最终结果。一个Reducer对应一个输出,因此R个Reducer就有R个结果。若结果需要进一步处理,这些结果又会作为输入数据进入下一个MapReduce过程。

整个过程中,数据是以键值对的形式存在的<Key,Value>,因此解决问题首先要确定Key和Value,然后实现Map和Reduce。


 

猜你喜欢

转载自myalicedream.iteye.com/blog/2227384