Hadoop之MapReduce WordCount分析

70 篇文章 0 订阅
47 篇文章 0 订阅

MapReduce的设计思想

主要的思想是分而治之(divide and conquer),分治算法。

将一个大的问题切分成很多小的问题,然后在集群中的各个节点上执行,这既是Map过程。在Map过程结束之后,会

有一个Ruduce的过程,这个过程即将所有的Map阶段产出的结果进行汇集。

写MapReduce程序的步骤:

1.把问题转化为MapReduce模型

2.设置运行的参数

3.写map类

4.写reduce类

例子:统计单词个数

将文件拆分成splits,每个文件为一个split,并将文件按行分割形成<key,value>对,MapReduce框架自动完成,其中行

偏移量(即key值)包括了回车所占的字符数

将分割好的<key,value>对交给用户定义的map方法(TokenizerMapper)进行处理,生成新的<key,value>对。

得到map方法输出的<key,value>对后,Mapper会将它们按照key值进行排序,并执行Combine过程,将key至相同value

值累加,得到Mapper的最终输出结果。

Reducer先对从Mapper接收的数据进行排序,再交由用户自定义的reduce方法(IntSumReducer)进行处理,


得到新的<key,value>对,并作为WordCount的输出结果


下面我们看官方给出的例子:

1:将Block块分割成三个Split
2:每个Split对应一个mapper
3: 三个mapper输出结果进行Shuffling,每个map的输出只是简单的key-value而非key-valuelist,
   所以洗牌的工作就是将map输出转化为reducer的输入的过程。
   在reducer开始之前shuffle要做的事情分为两步copy和sort 阶段。
原文地址:点击打开链接
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值