您的位置:首页 > 其它

MapReduce原理(分布式计算模型)----------总结

2014-03-04 16:52 281 查看
MapReduce:

1.是一个分布式的计算模型,用于解决海量数据的计算问题。
2.由两部分组成,Map和Reduce
3.Map和Reduce的参数都是key,value的形式

MapReduce的执行过程:
1.Map任务处理:
1.1读取HDFS中的文件作为输入,解析为key,value对。对输入文件的每一行,解析成key、value对。每一个键值对调用一次map函数。(k1,v1);

1.2在复写的map函数中,编写处理逻辑,对输入的key、valu对进行处理,转换成新的key、value(k2,v2);

1.3对输出的结果进行分区(key相同的放在一块);

1.4对不同的分区的数据,按照key进行排序、分组。-----分组:相同的key的value放到一个集合中。

1.5分组后的数据进行规约。----把大的数据变为小的数据(可选步骤)(k2,v2)

2.Reduce任务处理:
2.1对多个map任务的输出,按照不同的分区,通过网络拷贝到不同的reduce节点上。

2.2对多个map任务的输出进行合并,排序。写reduce函数实现自己的逻辑,对输入的k2,v2进行处理,转换成新的key,value(k3,v3)

2.3把reduce的输出保存到文件中。

-----------------------------规约:
job.setCombinerClass(MyReduce.class);//形参是自定义一的reduce类
1.为什么使用combiner:

Combiner发生在map端,对数据进行规约处理,数据量变小,网络传输变少,传输到reduce的数据量变小,传输时间变短,作业的整体时间变短。

2.为什么Combiner不作为mapreduce的标配
因为不是所有的算法都适合使用Combiner处理,如求平均数

3.Combiner本身已经执行了reduce操作,为什么在Reducer阶段还是要执行reduce操作
Combiner发生在map端,处理一个任务所接收的文件中的数据,不能跨map执行,只有reduce可以接收多个map任务处理的数据
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: