当前课程知识点:互联网大规模数据分析技术 >  第五章 大数据平台与技术 >  第11讲 MapReduce编程 >  第11讲 MapReduce编程

返回《互联网大规模数据分析技术》慕课在线视频课程列表

第11讲 MapReduce编程在线视频

下一节:第12讲 大数据处理平台Spark

返回《互联网大规模数据分析技术》慕课在线视频列表

第11讲 MapReduce编程课程教案、知识点、字幕

大家好

欢迎来到

互联网大规模数据分析技术

的课堂

我是今天的主讲教师李琳

来自武汉理工大学

今天我们给大家来讲解一下

Map-reduce这样一种编程模式

我们大家在上一节课当中

已经看到

在大规模的数据分析当中

我们需要去分发任务

我们需要进行分布式的并行编程

那么这样一些问题

现实当中是比较困难的

Map-reduce这样一种编程架构

很好的解决了上述的问题

能够进行大规模的数据分析

同时在上一节课当中

我们给大家介绍了Hadoop

这样一种开源的大数据分析平台

可以帮助大家

来解决大规模数据处理的问题

今天的课程我们从以下4个方面

来跟大家进行讲解

首先

我们会对Map-reduce编程模式

做一个简要的回顾

接下来我们会通过两个例子

来看看Map-reduce

究竟是怎么来完成运算的

接下来我们会给大家

简要的介绍一下有哪些问题

非常适合Map-reduce的编程

接下来我们看一下

Map-reduce的主要过程

Map-reduce这样一个模式

它是通过顺序的方式

来读取大量的数据

一行一个字一个字这样方式

来完成

在这里有两个操作

第一个操作我们把它叫做Map

在Map操作当中

需要通过Map的运算

来获取你所关心的内容

那么在Map之后呢

我们需要通过Group的操作

按照一种键值对的形式

来实现聚集的运算

最后一个是Reduce

Reduce可以进行总结

可以进行变化

可以进行累加这样一些运算

来达到最终的结果

我们把这样一个过程呢

用图形化的方式

来跟大家做一个讲解

在Map-reduce的Map阶段

我们将产生一个

非常重要的数据结构

这个数据结构叫什么名字呢

我们把它叫做key-value pairs

这个key-value pairs翻译过来

就叫做键值对

待会儿我们会通过一个例子

来看一看什么叫做键值对

我们将这样一些键值对

通过Map的方式

形成一个一个的键值对

然后我们在Reduce阶段

要做什么事情呢

首先在Reduce之前

我们要按照键的方式

相同的键

我们把它聚集到一起

相同的键

我们把它聚集到一起之后

我们通过Reduce的方式

把相同的键聚集的元素

进行某种运算

比如说累加运算

比如说累乘运算

这个根据大家自己的需要

来完成

通过这样一个图例

大家会发现它非常简单

无非就是两个步骤

一、输入数据,一行一行

二、产生键值对

三、对键值对进行运算

看上去很简单

究竟在具体的问题当中

这个键值对是一种什么样子呢

我们这里有一个例子

这个例子呢叫做Word Count

也就是计数

什么意思呢

假设我们有一个非常大的文件

这个文件大到无法存到内存

我们的用户想知道这个文件当中

每个单词出现的次数

比如说在这里我有一个例子

输入是hello world

Hello hadoop

hello Map-reduce

很多很多行

那么我想得到的输出是

hadoop在这个里面出现了一次

hello出现了3次

Map-reduce出现了一次

word出现了一次

像这样的运算非常适合

用Map-reduce的方式来完成

当然这个例子呢

实际可以扩展到其他的方面

比如说要找到Popular URL

也就是统计哪些URL

被用户点击的次数越多

这个里面实际上

就是一个计数的工作

那么我们来看一下

怎么来完成的

首先我们有一个Big Document

大家看到big

这个big指的是无法放到内存

Map-reduce的Map

要产生什么样的运算结果呢

大家可以看到

(the,1)

(crew,1)

(of,1)

那在这个里面哪个是key

哪个是value呢

显然前面的单词

The、crew、of、space

这是key

那么value是什么呢

就是它的出现

在这个例子当中

Map只产生(key,1)

也就是说我遇到一个the

我就产生(the,1)

我遇到一个crew

就产生一个(crew,1)

我遇到一个of就产生(of,1)

我再遇到the

我仍然产生的是(the,1)

接下来呢

我们要做的工作就是聚集

那么聚集的话呢

我们把相同的key聚集到一起

大家可以看到

这几个key是一样的都是the

那么它就把它放到了一起

在这里我虽然是用列

一行一行的形式来表示

那么在具体的存储当中

大家可以选用

相应的数据结构来表示

通过聚集之后

接下来我们要做的工作

把聚集的一起的

相同的key的value

进行某种操作

在这个例子当中

我们要计数

那么怎么把这些1、1、1

一个一个记到一起呢

这就是累加

所以通过累加

我们得到the出现了3次

通过累加

我们得到crew出现了两次

所以这就是

整个Map-reduce的一个过程

在这个过程当中

它主要是顺序的去读取数据

我们可以再回顾一下

很多的文件无法放到内存

怎么办

一行一行地去读

读到一个单词逗号1

读到一个单词逗号1

读到一个单词逗号1

把相同的单词放到一起

由于要计数

我们对它进行累加操作

这样自然而然就得到了

每一个单词出现的次数

大家来看看是不是非常简单呢

对于喜欢编程的同学来说呢

我们用这样一段伪代码

来给大家做一个描述

在Map阶段我们只产生

(单词,1)

遇到一个单词就产生单词逗号1

在Reduce阶段

我们对每一个单词

进行计数的累加

这是一个累加运算符

那么熟悉编程的同学可以看到

最后得到输出结果

那么有同学就会说了

老师有了Map有了Reduce

那么你中间的Group到哪去了

Group是由hadoop平台

自己来完成的

不需要大家去做

大家看看这样一个

貌似复杂的问题

是不是变得特别简单呢

在这个里面大家要注意到的是

Map它是分发数据

所以Map的个数一般来说

是远远地大于reduce的个数

所以我们说

R is smaller than M

通过这个例子

大家了解了Map-reduce

这样一种编程的基本思路

感觉也非常简单

大家可以在

hadoop平台上去测试一下

同时大家注意一下

刚才

我是直接从Map到了Reduce

实际上如果学过循环

学过这种语句的嵌套

我们可以发现

实际我们可以在Map里面

我们可以做一定的Reduce

在Map里面

我也可以做一定的Reduce

然后通过运算之后

将做最后的Reduce

做到最后的结果

也就是说Map和Reduce里面

可以相互地进行嵌套

这个大家可以在编程当中

去逐步提高这样的技能

有哪些问题

适合这样一些Map-reduce呢

当然有很多这样一些问题

接下来的我会再看一个例子啊

在这里面的这些例子

大家可以在课后呢

去思考一下

接下来我们看一个例子

这个例子是表的自然连接

在这里叫natural join

学过数据库的同学都知道

Natural join

是对两个表进行连接操作

在这里我们举这样一个例子

来跟大家讲解一下

看看它是否也适合

我们的Map-reduce编程

在这里面的我们有两张表

第一张表叫R

我们有两列A和B

第二张表

我们也有两列B和C

那么自然连接的意思是什么呢

对相同的列

它的值相同的情况下

进行连接操作

我们举一个例子

大家看到这有a2、b1

那我就找一下这张表里面

有没有b1

没有

那么我们对这一个呢

就无法进行连接操作

我们看一下a3,b2

我们找一下有没有b2呢

有的

这里有一个b2,c1

那我们就可以把它连起来

连成了a3,b2,c1

在这里面呢我们把b2去掉

就变成了a3,c1

有同学就会问了

老师这里还有个b2,c2

是的

我们也可以连接b2,c2把b2去掉

我们得到了a3,c2

这就是自然连接

也就是找到相同的列

值相同的进行连接操作

这样一个问题

我们如果用Map-reduce怎么来做呢

我们假设这两个表都非常大

无法存到内存当中

我们逐行来读取数据

那么读到一个a1,b1

我们怎么存成key-value呢

在这个里面key是什么呢

大家要注意到

我们是用什么来实现表的连接

我们是用b值相同

来实现表的连接

那么自然而然我们就会想到

用b这一列来作为我们的key

那么value是什么呢

value就是剩下的列

当然我写成b1是key

value是a1

那么这个a1来自于哪里

我也必须存在value里面

所以最终形成大家可以看到

我们的键值对是什么呢

b,a 还要加上一个表的名字

大家看到没有

这里有一个表的名字

同时另外一张表b,c

我们存成key的时候呢

b仍然是我们的key

value是这一

剩下的这一列c

和它这个表的名字

所以这就是我们的键值对

key是相同的列的这个名字

value剩下的列和表的名字

在我们的Map操作当中呢

就会产生所有以b为key的

这样一个value键值对

同时在Reduce操作当中

我们要做什么事情呢

前面

我们在讲计数操作的时候

是统计个数进行累加

那么在这里面

我们要实现表的连接

那就是要连接两个表

所以要把b值相同的表连接起来

在Group操作当中

我们把相同的键值

都已经放到了一起

那么连的操作

只要把相同的b进行一个连接

输出剩下的a列和c列即可

所以这样一个问题大家看到

非常适合我们Map-reduce操作

逐行顺序地读入

产生键值对

将相同的键值所在的元素

进行连接操作

形成最终的自然连接的结果

那么通过以上的两个例子的学习

大家已经简单的

掌握了Map-reduce编程的

一个基本思想

如果大家

对这方面的内容感兴趣的话呢

大家可以去看以下网址的内容

来逐步地锻炼自己Map-reduc

编程的技能

感谢大家的观看

今天的课程就到这里

互联网大规模数据分析技术课程列表:

第一章 大数据与数据挖掘概述

-第1讲 大数据与数据挖掘概述

--第1讲 大数据与数据挖掘概述

第二章 关联规则

-第2讲 频繁项集和关联规则的基本概念

--第2讲 频繁项集和关联规则的基本概念

-第3讲 Apriori算法

--第3讲 Apriori算法

-第4讲 Apriori算法的改进与兴趣度度量

--第4讲 Apriori算法的改进与兴趣度度量

第三章 分类算法

-第5讲 分类的基本概念

--第5讲 分类的基本概念

-第6讲 决策树

--第6讲 决策树

-第7讲 简单贝叶斯分类

--第7讲 简单贝叶斯分类

第四章 聚类算法

-第8讲 聚类的基本概念

--第8讲 聚类的基本概念

-第9讲 K-Means & K-Medoids Clustering

--第9讲 K-Means & K-Medoids Clustering

-第四章 聚类算法--习题

第五章 大数据平台与技术

-第10讲 大数据处理平台Hadoop

--第10讲 大数据处理平台Hadoop

-第11讲 MapReduce编程

--第11讲 MapReduce编程

-第12讲 大数据处理平台Spark

--第12讲 大数据处理平台Spark

-第13讲 NoSQL数据库

--第13讲 NoSQL数据库

第六章 信息检索

-第14讲 Web信息检索简介

--第14讲 Web信息检索简介

-第15讲 信息检索之倒排索引

--第15讲 信息检索之倒排索引

-第16讲 信息检索之TFIDF

--Video

-第17讲 信息检索之相似度排序

--第16讲 信息检索之TFIDF

第七章 Web链接分析

-第18讲 Web搜索之链接分析

--第18讲 Web搜索之链接分析

-第19讲 Web搜索之PageRank

--第19讲 Web搜索之PageRank

-第20讲 Lucene信息检索平台

--第20讲 Lucene信息检索平台

-第七章 Web链接分析--习题

第八章 推荐系统

-第21讲 推荐系统简介

--第21讲 推荐系统简介

-第22讲 推荐系统之协同过滤

--第22讲 推荐系统之协同过滤

-第23讲 Mahout数据挖掘平台

--第23讲 Mahout数据挖掘平台

-第24讲 信息过滤评价体系

--第24讲 信息过滤评价体系

-第八章 推荐系统--习题一

-第八章 推荐系统--习题二

自我提升练习

-综合编程题

第11讲 MapReduce编程笔记与讨论

也许你还感兴趣的课程:

© 柠檬大学-慕课导航 课程版权归原始院校所有,
本网站仅通过互联网进行慕课课程索引,不提供在线课程学习和视频,请同学们点击报名到课程提供网站进行学习。