主页 > 新闻资讯 > 大数据学习:MapReduce算法入门解析

大数据学习:MapReduce算法入门解析

作者:张老师 浏览次数: 2021-01-28 17:36
MapReduce,作为Hadoop的原生计算引擎,在早期的大数据市场当中,无疑是得到重用的,而后面随之而来的Spark开始逐渐侵占市场,MapReduce似乎走向末没落。但是从本质上来说,Spark也源自MapReduce思想。今天的大数据学习分享,我们就主要来讲讲MapReduce算法入门解析。

大数据学习:MapReduce算法入门解析

Hadoop中的MapReduce

在大规模数据处理时,MapReduce在三个层面上的基本构思

如何对付大数据处理:分而治之

对相互间不具有计算依赖关系的大数据,实现并行最自然的办法就是采取分而治之的策略。

上升到抽象模型:Mapper与Reducer

MPI等并行计算方法缺少高层并行编程模型,为了克服这一缺陷,MapReduce借鉴了Lisp函数式语言中的思想,用Map和Reduce两个函数提供了高层的并行编程抽象模型。

上升到构架:统一构架,为程序员隐藏系统层细节

MPI等并行计算方法缺少统一的计算框架支持,程序员需要考虑数据存储、划分、分发、结果收集、错误恢复等诸多细节;为此,MapReduce设计并提供了统一的计算框架,为程序员隐藏了绝大多数系统层面的处理细节。

构建抽象模型-Map和Reduce

借鉴函数式设计语言Lisp的设计思想

函数式程序设计(functional programming)语言Lisp是一种列表处理语言(List processing)。

Lisp定义了可对列表元素进行整体处理的各种操作,如:

如:(add#(1 2 3 4)#(4 3 2 1))将产生结果:#(5 5 5 5)

Lisp中也提供了类似于Map和Reduce的操作

如:(map‘vector#+#(1 2 3 4 5)#(10 11 12 13 14))

通过定义加法map运算将2个向量相加产生结果#(11 13 15 17 19)

(reduce#’+#(11 13 15 17 19))通过加法归并产生累加结果75

Map:对一组数据元素进行某种重复式的处理

Reduce:对Map的中间结果进行某种进一步的结果整合

关键思想:为大数据处理过程中的两个主要处理操作提供一种抽象机制

MapReduce中的Map和Reduce操作的抽象描述

MapReduce借鉴了函数式程序设计语言Lisp中的思想,定义了如下的Map和Reduce两个抽象的编程接口,由用户去编程实现:

—map:(k1;v1)→[(k2;v2)]

输入:键值对(k1;v1)表示的数据

处理:文档数据记录(如文本文件中的行,或数据表格中的行)将以“键值对”形式传入map函数;map函数将处理这些键值对,并以另一种键值对形式输出处理的一组键值对中间结果[(k2;v2)]

输出:键值对[(k2;v2)]表示的一组中间数据

—reduce:(k2;[v2])→[(k3;v3)]

输入:由map输出的一组键值对[(k2;v2)]将被进行合并处理将同样主键下的不同数值合并到一个列表[v2]中,故reduce的输入为(k2;[v2])

处理:对传入的中间结果列表数据进行某种整理或进一步的处理,并产生最终的某种形式的结果输出[(k3;v3)]。

输出:最终输出结果[(k3;v3)]

Map和Reduce为程序员提供了一个清晰的操作接口抽象描述

各个map函数对所划分的数据并行处理,从不同的输入数据产生不同的中间结果输出。

各个reduce也各自并行计算,各自负责处理不同的中间结果数据集合—进行reduce处理之前,必须等到所有的map函数做完,因此,在进入reduce前需要有一个同步障(barrier);这个阶段也负责对map的中间结果数据进行收集整理(aggregation&shuffle)处理,以便reduce更有效地计算最终结果

最终汇总所有reduce的输出结果即可获得最终结果

关于大数据学习,MapReduce算法入门解析,以上就为大家做了简单的讲解了。MapReduce的并行计算思想,在大数据离线批处理上,是具有很好的基础的,搞懂MapReduce算法很重要。成都加米谷大数据,专业大数据培训机构,大数据开发、数据分析挖掘,零基础班本月正在招生中,课程大纲及学习视频可联系客服获取!
热点排行
推荐文章
立即申请>>