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

大数据
首先MapReduce很明显是分为Map阶段和Reduce阶段。两个阶段分别做什么呢?小编自己画了个图,大家共勉一下,请看正文。

首先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 中。

责任编辑:未丽燕 来源: 今日头条
相关推荐

2011-08-10 11:16:00

Platform

2020-10-26 07:05:02

大数据管道编排编排框架

2015-08-18 09:47:13

2023-11-30 11:39:52

Rust生态框架

2012-08-08 09:53:23

HadoopMapReduce

2018-03-28 17:16:09

大数据

2018-12-07 14:50:35

大数据数据采集数据库

2015-08-11 15:52:52

大数据数据分析

2012-03-12 10:09:50

Hadoop微软大数据

2013-03-01 10:46:50

大数据核心海量数据

2013-08-14 09:48:02

微软REEF

2020-01-09 10:47:15

HDFS数据文件

2021-05-09 15:32:50

大数据架构大数据数据

2022-07-14 09:24:28

大数据技术

2013-01-21 13:22:56

IBMdW

2015-09-15 14:44:37

大数据核心问题

2019-03-05 14:57:21

大数据Hadoop框架

2015-03-25 17:24:48

大数据时代大数据数据资产

2019-02-20 23:06:56

大数据数据语言

2015-09-11 13:54:51

大数据关键技术
点赞
收藏

51CTO技术栈公众号