阅读目录

* 一、MapReduce编程模型 <https://www.cnblogs.com/laowangc/p/8953434.html#_label0>
* 二、Map过程(以wordcount为例):
<https://www.cnblogs.com/laowangc/p/8953434.html#_label1>
*  三、Reduce过程: <https://www.cnblogs.com/laowangc/p/8953434.html#_label2>
回到顶部 <https://www.cnblogs.com/laowangc/p/8953434.html#_labelTop> <>

一、MapReduce编程模型

一种分布式计算框架,解决海量数据的计算问题。

MapReduce将整个并行计算过程抽象到两个函数:

  Map(映射):对一些独立元素组成的列表的每一个元素进行制定的操作,可以高度并行。

  Reduce(化简):对一个列表的元素进行合并。

一个简单的MapReduce程序只需要指定Map()、reduce()、input和output,剩下的事情由框架完成。

回到顶部 <https://www.cnblogs.com/laowangc/p/8953434.html#_labelTop> <>

二、Map过程(以wordcount为例):

1 一行一行读,每一行都解析成key/value形式。每一个键值对,都调用一次Map函数。

假设有一个文件的内容是:

hello hadoop!

hello world!

那么Map的读取过程为:

key value operate
0 hello hadoop! --> hello:1 hadoop!:1
13 hello world! --> hello:1 world!:1
2 写自己的逻辑,对输入的key/value处理,转换成新的key/value输出。

key value
hello 1
hadoop! 1
hello 1
world!  1
 

3 对输出的key/value进行分区。



 

注意:Shuffling囊括了:partition和sort。

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

key list<value>
hello 2
hadoop! 1
world! 1
 

5 (可选)分组后的数据进行归约。

回到顶部 <https://www.cnblogs.com/laowangc/p/8953434.html#_labelTop> <>

 三、Reduce过程:

1 对多个map任务的输出,按照不同的分区,通过网络copy到不同的reduce节点。

2 对多个map任务的输出进行合并、排序。写reduce函数自己的逻辑,对输入的key/value处理,转换成新的key/value输出。

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

友情链接
KaDraw流程图
API参考文档
OK工具箱
云服务器优惠
阿里云优惠券
腾讯云优惠券
华为云优惠券
站点信息
问题反馈
邮箱:[email protected]
QQ群:637538335
关注微信