加入收藏 | 设为首页 | 会员中心 | 我要投稿 PHP编程网 - 黄冈站长网 (http://www.0713zz.com/)- 数据应用、建站、人体识别、智能机器人、语音技术!
当前位置: 首页 > 运营中心 > 网站设计 > 教程 > 正文

大数据核心框架MapReduce过程解析

发布时间:2019-08-15 05:42:08 所属栏目:教程 来源:架构师公社
导读:首先MapReduce很明显是分为Map阶段和Reduce阶段。两个阶段分别做什么呢? 小编自己画了个图,大家共勉一下 图中1-2过程为map过程,3为Reduce过程,接下来看一张专业图片,两张对比一起看 在整个mapReduce过程包含很多复杂的处理过程,而我们要学习的就是其

首先MapReduce很明显是分为Map阶段和Reduce阶段。两个阶段分别做什么呢?

小编自己画了个图,大家共勉一下

大数据核心框架MapReduce过程解析

图中1-2过程为map过程,3为Reduce过程,接下来看一张专业图片,两张对比一起看

大数据核心框架MapReduce过程解析

在整个mapReduce过程包含很多复杂的处理过程,而我们要学习的就是其中几个过程包含,Split过程、Partitione过程还有Shuffle过程,举一个实例的话

假设我们手上有很多复杂数据,那么怎样来处理呢? 第一步就是分类,把数据分类。 分类后的数据就不复杂了,这就是异而化同。 分类之后数据还是很多,怎么办呢? 第二步,分割。 分割就是把数据切分成小块, 这样就可以并发或者批量处理了, 这就是大而化小。

回到 map-reduce概念上, map的工作就是切分数据,然后给他们分类,分类的方式就是输出key,value对,key就是对应“类别”了。 分类之后,reducer拿到的都是同类数据,这样处理就很容易了。

大数据一般采用的HDFS 解决了大数据存储的问题,那么 MapReduce 自然要解决的是数据计算问题在处理大数据计算中,一台机器是无法满足大批量数据计算的,这个时候就需要使用MapReduce,MapReduce是一种编程模型,用于大规模数据集的并行计算,需要将数据分配到大量的机器上计算,每台机器运行一个子计算任务,最后再合并每台机器运算结果并输出。 MapReduce 的思想就是 『分而治之』

MapReduce 将整个并行计算过程抽象到两个函数,在 Map 中进行数据的读取和预处理,之后将预处理的结果发送到 Reduce 中进行合并。一个简单的 MapReduce 程序只需要指定 map()、reduce()、 input 和output,剩下的事由框架完成。

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

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

MapReduce执行流程

以经典的 WordCount 的例子来说明一下MapReduce的执行流程,WordCount就是统计每个单词出现的次数。

大数据核心框架MapReduce过程解析

MapReduce计算框架的一般流程有以下几个步骤:

输入 ( Input ) 和拆分 ( Split ):

对数据进行分片处理。将源文件内容分片成一系列的 InputSplit,每个 InputSplit 存储着对应分片的数据信息,记住是对文件内容进行分片,并不是将源文件拆分成多个小文件。

迭代 ( iteration ):

遍历输入数据,并将之解析成 key/value 对。拆分数据片经过格式化成键值对的格式,其中 key 为偏移量,value 是每一行的内容,这一步由MapReduce框架自动完成。

映射 ( Map ):

将输入 key/value 对映射 ( map ) 成另外一些 key/value 对。MapReduce 开始在机器上执行 map 程序,map 程序的具体实现由我们自己定义,对输入的 key/value 进行处理,输出新的 key/value,这也是hadoop 并行事实发挥作用的地方。

洗牌 ( Shuffer ) 过程:

依据 key 对中间数据进行分组 ( grouping )。这是一个洗牌的过程,得到map方法输出的 对后,Mapper 会将它们按照 key 值进行处理,这包括 sort (排序)、combiner (合并)、partition (分片) 等操作达到排序分组和均衡分配,得到 Mapper 的最终输出结果交给 Reducer。mapper 和 reducer 一般不在一个节点上,这就导致了reducer 需要从不同的节点上下载数据,经过处理后才能交给 reducer 处理。

归并( Reduce ):

以组为单位对数据进行归约 ( reduce )。Reducer 先对从 Mapper 接收的数据进行排序,再交由用户自定义的 reduce方法进行处理。

迭代:

将最终产生的 key/value 对保存到输出文件中。得到新的 对,保存到输出文件中,即保存在 HDFS 中。

(编辑:PHP编程网 - 黄冈站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读