当前课程知识点:高级大数据系统 >  MapReduce >  Processing pattern >  Video

返回《高级大数据系统》慕课在线视频课程列表

Video在线视频

Video

下一节:Video

返回《高级大数据系统》慕课在线视频列表

Video课程教案、知识点、字幕

大家好

上一节我们讲到了什么MapReduce

以及为什么要我们要用MapReduce

来进行大规模的这样一个数据处理

那么在这一节

我们将详细的介绍在MapReduce里面

数据是怎么样被处理的

那么也就是它的

这样一个数据处理的一个模式

我们通过一个简单的例子

来带入我们今天要讲的

这个数据处理模式

那么在我的左手边

在这个PPT的左手边

实际上是一个这个英文的短文

我们的目标是想去计算

在这篇短文里面每个单词

出现的这个数量是多大

也就是单词的这样一个频率

那么这个任务当然非常简单

大家可以通过一个很简单的程序

就可以把这件事情做到

但是大家去想象

当这个数量是非常大的时候

比如说这个数量已经在你的内存

或者在你的一个简单的

服务器上装不下的时候

这件事情应该怎么去做

那么我们就用MapReduce

来解决这样一个事情

那么在MapReduce里面

我们看看我们怎么去做

首先我们会顺序的

去读取这样一个数据集

也就是去对短文中

每个单词去进行一个扫描

那么这个过程是并行的在大量的

服务器上进行的

那么它做什么事情呢

就是给我们每一个出现的单词

给它加上一个value

这个value就加成了1

那么我们可以看到

会出现这样的一个结果

每个单词被加了一个数量1

那么这是map的过程

那map完了之后

会把所有的结果进行一个排序

把它们按照这个单词的类型

把它们放到了一块

我们看到把不同的单词排到了一起

有A有aback等等

那么它们把被放到了一起

那么最后一个阶段是reduce的阶段

我们在reduce里面做了什么事情呢

我们会让相同的这个单词

也就是中间的这样一个key

对应的结果进行一个叠加

比如说我们把所有a的一

把它做了一个加和

我们最终得到了4736

那么得到了我们最终想要的一个结果

那这是MapReduce

进行一个简单的任务的时候

它经历的这样一个过程

那么我们现在通过这个技术的一个展示

我们把刚刚的这样一个过程

把它详细的这样一个分解一下

那我们来看一下它的步骤是什么样子

第一步实际上我们是把原来

原始我们需要处理的

这样一个数据集文件

给分割成了很多的这样一个数据小块

那么这一块又和我们之前说到的

这样一个分布式文件系统对应上了

那么在分布式文件系统里面

我们已经有了这样的

一个的小小的数据块

那么在这里面我们把它们称做了叫做shard

从0一直到m-1

我们有了这样的

一些分布式的数据块

它们分布在不同的服务器上

作为原始的数据可以直接读入进行处理

第二步我们就是会产生一系列的进程

而这个过程通常是由用户来发起的

那么这一步是怎么做的呢

在整个系统里面用户会通过

和我们刚刚说到的

这样一个中心的节点进行交互

然后让它帮忙在所有的这个工作节点

这些worker上产生一系列的进程

那么每一个worker

它既能够产生一个map的进程

也能产生一个reduce的进程

那么我们假设在整个系统里面

我们产生了m个map的

这样一个进程这样的任务

那我们产生了r个这样reduce的任务

那么它们就开始运行起来了

我们来看看当它们运行起来之后

map和reduce分别

会去做一些什么样的事情

那么这是map的阶段

我们来看看map

会做什么样的事情呢

map实际上它会从给它指定的

这样一个数据块shard里面

去读取数据

把数据读出来

然后做什么呢

会根据用户写的

这样一个map的程序

来对读入的key和value的

数据集进行一个操作

这个操作有可能是查找

有可能是做一些排序

有可能是做其它更复杂的

这样一个工作

总之这一步它会产生一个中间结果

那这个中间结果实际上会map的进程

写入到它本机的这个内存中

最终会不断地周期性地

写到这个磁盘里面

那么就像这里面

我们说到它写的过程中

实际上它会有一定的

这样的结构去依赖

这个结构实际上

是由一个叫做partition的

这样一个过程来决定的

也就是说把所有产生的

这个中间key和中间value

按照一定的规律

写到不同的partition里面

那么这个partition的数量

和partition的方式

实际上是和我们后面产生的

这个reducer

它的一个情况相匹配的

那么我们后面会去介绍一下

在前一步我们就得到了

一系列的中间结果

那这些中间结果具有key和value的属性

那么它们被分成了R个这样的区域

那么下一步我们就需要把这些数据

从map的节点移动到reduce的节点

进行进一步的这个处理

那么我们来看看这个是怎么去做的

map产生的数据reduce

需要接受这些数据

它们中间通过partition的过程连接起来

那么在这里面实际上一个核心的东西

就是我们刚刚说到的partition的函数

那这个函数决定了中间

生成的这些key

它到底应该到哪一个reducer上去

那么在默认的这个配置下

实际上我们通常是通过一个哈希函数

来模R这样的一个方法

来生成这样一个partition的key

那它的用处有什么

比如说我们可以通过这个中间的key

让中间的key基本上

比较随机的分散到各个reducer上去

那么可以在reducer的

这个服务器之间

达到一个相对比较均衡的

这样一个任务的分配

那实际上这个partition

是一个向用户暴露的一个接口

用户可以根据自己的需要

来决定他的partition怎么去写

比如说他并不需要任务非常的均衡

而为了达到其他的目标

那么他可能可以改写

这个partition的过程

那当这个partition完成之后

实际上就可以慢慢地

使整个任务推进到reduce

这样一个阶段

那么reduce这个阶段

数据就会从map的节点

通常是从它们的这个本地的磁盘中

把数据给拉到reduce的节点上

来进行一个处理

我们来看一下

这个过程大概是什么样子

那么在reduce这个阶段实际上

和map阶段是不一样的

它并不是说让每一个节点处理

本机上这些shard的

这些数据块就可以了

而是需要把所有整个系统里面

具有相同的key

中间key的这些数据放到

相同的reducer上去处理

也就是说每个reducer在系统中

处理了某一个中间key

而且是系统中所有的中间key

它对应的这个结果

那这中间会带来什么样的一个问题

它的问题

就是说我们需要从不同的map服务器上

把具有某一种key的这个数据

复制到某一个reducer上

会带来什么

它会带来网络的开销

对吧

所以在这个过程中

我们可以从这张图上看到

实际上数据

需要从不同的reducer到worker

然后从它们的磁盘把数据

经过网络经过交换机

最终传输到某一个处理它的

这个reducer的节点上去

那这个过程在今天实际的系统中

实际上也是开销比较大的一个过程

大量的研究工作实际上

也是在这一块展开

怎么样降低这个从map到reducer

它的这样一个shuffle的一个过程

怎么样使得这个过程尽可能的高效

那么是今天对MapReduce

这一类系统优化的一个关键点

好我们假设刚刚的内部已经完成了

我们可以看到在reducer的

这样一个工作节点上

实际上它有来自系统中

各个其他map节点的这个数据

通过远程的复制已经把它拿了过来

那么在这里就会进行我们最开始说的

那一步进行数据的一个整合

那么reduce里面用户会根据自己的

需要进行reduce函数的一个编写

这个过程有可能是数据的叠加

像我们刚刚说到的例子中进行单词统计

也有可能是进行一些这个统计

也有可能是找出某一些结果等等

这都是在reduce里面可以实现的功能

那么大家可以在日后自己的

这个数据处理任务中

具体的去尝试不同的这种类似的写法

那么完成这一步之后

实际上我们的整个数据处理任务

就已经基本上结束了

Reduce结束之后

实际上根据用户对于reduce的编写

又会进一步把最终生成的结果

写入到reducer节点的这个磁盘上

写入到他的这个分布式文件系统里面

实际上准确的说

那么完成这一步之后

实际上用户就可以通过分布式的

这个文件系统进行数据的一个访问

最终得到他想要进行的结果

那再往后它可以进一步

去迭代另一个这个MapReduce任务

或者是就已经得到了

最终的这样一个需要的数据集

高级大数据系统课程列表:

Introduction to Big Data Systems

-What is big data and what is big data system?

--Video

-Problems in big data systems?

--Video

-Overview of the course

--Video

-Principles of big data system design

--Video

Basics of Linux Data Processing

-Manipulating Data on Linux

--Video

--Video

--Video

-Basics of Linux Data Processing--Manipulating Data

-Running Commands on a Single Machine

--Video

-Running Commands on a Single Machine--作业

-Using a Linux Cluster

--Video

-Using a Linux Cluster--作业

Distributed File System

-Storage for Big Data Computing: Distributed file system

--Video

-Storage for Big Data Computing: Distributed file system--作业

-File system and GFS

--Video

-File system and GFS--作业

-Understanding HDFS using Legos

--Video

-Understanding HDFS using Legos--作业

-File System Implementation and DFS

--Video

--Video

-File System Implementation and DFS--作业

MapReduce

-What is MapReduce and why

--Video

-What is MapReduce and why

-Learn MapReduce by playing with cards

--Video

-Processing pattern

--Video

-Processing pattern--作业

-Hadoop

--Video

-Hadoop--作业

-Algorithms in MapReduce

--Video

-Algorithms in MapReduce--作业

-Tutorial

--Video

In-memory Processing

-Background

--Video

-Background--作业

-Spark

--Video

-Spark--作业

-Use Spark for data mining

--Video

-Use Spark for data mining--作业

-Spark data processing

--Video

-Spark data processing--作业

-Experiment in Spark

--Video

-Experiment in Spark--作业

Streaming Data Processing

-Introduction to streaming data processing

--Video

-Introduction to streaming data processing--作业

-Storm

--Video

--Video

--Video

-Storm--作业

-Spark streaming

--Video

--Video

-Spark streaming--作业

NoSQL

-NoSQL introduction

--Video

-NoSQL introduction--作业

-Common Advantages

--Video

-Common Advantages--作业

-Bigtable

--Video

-Bigtable--作业

-Master Startup

--Video

-Master Startup--作业

-HBase

--Video

-HBase--作业

Graph Processing

-What is GraphDB and Graph data processing

--Video

-What is GraphDB and Graph data processing--作业

-Graph systems

--Video

-Graph systems

-Example of a GraphDB

--Video

-Example of a GraphDB--作业

Machine Learning System

-Mahout

--Video

-Mahout--作业

-Case Study: Recommendation

--Video

-Case Study: Recommendatio作业

-Recommendation in Mahout

--Video

-Recommendation in Mahout--作业

Video笔记与讨论

也许你还感兴趣的课程:

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