首页
学习
活动
专区
工具
TVP
发布

hadoop学习笔记四:MapReduce简介

什么是MapReduce?

MapReduce是一种分布式的计算模型,解决海量数据的计算问题。源自于Google的MapReduce论文,Hadoop Mapreduce是Google MapReduce的克隆版。MapReduce将整个并行计算过程抽象到2个函数:map()和reduce()。一个简单的MapReduce程序只需要指定map()、reduce()、input、format,剩下的由框架来进行完成。在进行数据的传输的时候采用的是Key/Value对的形式进行传输。基于MapReduce计算模型编写分布式并行程序非常简单,程序员的主要编码工作就是实现Map和Reduce函数。其它的并行编程中的种种复杂问题,如分布式存储,工作调度,负载平衡,容错处理,网络通信等,均由YARN框架负责处理。

map:对一些独立元素组成列表的每一个元素进行指定的操作,可以高度并行。

reduce:对一个列表的元素进行合并

特点

1.易于编程

2.良好的扩展性

3.容错性高

4.适合PB级以上海量数据的离线处理

处理过程

1.将文件拆分成splits(分片),并将文件按行分割成key/value对。这一步有MapReduce框架自动完成,其中偏移量(即key值)包括了回车所占的字符数(Windows/Linux环境不同字符数不同)

2.分割好的key/value对交给用户自定义的map方法进行处理,生成新的key/value对。

3.得到map方法输出的key/value对后,Mapper会将它们按照key值进行排序,并执行Combine过程,将key值相同的value进行计算,得到Mapper的最终输出。

4.Reducer先对从Mapper接收的数据进行排序,再交由用户自定义的reduce方法进行处理,得到新的key/value对,并作为MapReduce程序的输出结果。

整个过程分为2个阶段

Mapper阶段(由一定数量的Map Task组成)

1.输入数据格式解析(InputFormat)

2.输入数据处理(map())

3.数据分组(Partitioner)

Reducer阶段(由一定数量的Reduce Task组成)

1.数据远程拷贝(copy)

2.数据按照key排序(sort)

3.数据处理(reduce())

4.数据输出格式(OutputFormat)

MapReduce编程模版(优化后)

首先需要创建一个MapReduce的主类 继承 Configured(配置文件configuration的基础操作类) 并实现 Tool(提交MapReduce任务和执行MapReduce的优化工具类)

编写内部类Mapper

编写内部类Reducer

创建Job并设置输入输出

设置job任务

执行job任务

完整代码github地址:https://github.com/PeaceBao/Project01

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180715G10A1800?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券