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

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

Video在线视频

Video

下一节:Video

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

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

大家好

在之前的两节

我们说到了这个什么是MapReduce

为什么我们要用MapReduce

以及MapReduce里面

怎么样进行数据的这样一个处理

那么在这一节

我们会进入到系统的部分

也就是说MapReduce

它在整个系统的构成

在它里面有没有什么样的

这种数据调度

以及系统调度这样一个方法

这是我们这一节课

需要去给大家说的一些东西

上一小节我们说到的

这样一个MapReduce

它的一个数据处理的模式

它的这些过程

我们进行了一个整合

那在这里面我们可以看到

从左边数据的

这样一个输入到中间map和reduce的阶段

以及到最后数据的这样一个输出

实际上它大致可以分成这样一个3个过程

那么在这样的一个3个过程中

实际上有一个核心的节点

我们的这个job tracker

负责跟踪整个

这个数据处理的一个任务

那么它负责把用户提交的任务

调度到各个worker上

同时它负责把所有的

这个节点进行一个维护

同时监控节点

一个健康的一个状态

比如说有节点在这个过程中

可能会挂掉

可能会出现延迟的响应

可能会出现硬盘的

这样一个丢失那这个过程

实际上MapReduce系统

它是进行了一个管理的

那么在map和reduce完成了之后

实际上整个数据

又会提交给我们之前提到过

这个分布式的文件系统

HDFS或者是GFS里面

那么这些数据作为永久的保存

会被持久化下来供以后的

这个数据的使用

那么这是整个数据处理的流程

我们来看这个流程

它对应到系统上系统的层面

它是一个什么样的一个过程

我们来看这是MapReduce

它的系统的一个简单的一个示意图

从最左边我们可以看到

它底下支撑了整个数据的

这样一个分布式文件系统

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

我们可以把原始的数据

给切分成很多的这个小块

那么这小块是map进行读入的一个单元

那在整个这个map task中

就会对数据进行读入然后进行一个抽取

同时进行一些功能性的这样一个操作

最后得到一系列的中间结果

和中间的这样一个value

那么这些中间结果和中间value

通过local storage被存到了本地的磁盘

每个map task它本地的一个磁盘

然后根据partition的这样一个要求

从本地的这个节点复制到

将要处理这个中间数据的

这样一个reduce的节点

那么在reduce里面

会对数据进行一系列的操作

包括reduce

在最开始进行预操作的时候

对整个数据进行一个排序

那么在reduce中

会对结果进行一个合并

以及其他复杂的任务

最后会将输出的数据

也可以以value的形式存储到HDFS里面

回到分布式文件系统

那么这是整个系统它的一个流程

以及它在这个过程中

涉及到的这些计算机系统

和计算机网络的这样一个结构

那么在这张图里面

实际上我们可以看得到

这是一个非常分布化的一个结构

在这里面数据被分散到了整个系统里面

我们可以看到底下圆形代表的数据

在各个节点上都有存在

那么它们的分布

可能会有一些流行度上的这种差异

可能会有一些这种处理要求上的这个差异

那么同时我们会有大量的

这个data node和task tracker

它们对应到这个数据处理的

这个具体的每一个节点上

那这样的节点

在一个今天的典型的数据中心里面

可能会有上千个甚至上万个

是一个非常大规模的这样一个量

这样的一个系统

这样的一个的MapReduce的调度的系统

所以它面临大量的挑战

它怎么样能够有效的去处理这些任务呢

要知道在我们的这个系统中

可能不止一个用户它在提交任务

也不止一个业务

它拥有自己的数据集

我们可能会有上万甚至几十万的用户

这些用户我指的是广义的用户

可能有些用户是计算机的程序

那么他们需要MapReduce去生成数据的结果

同时我们会有海量的这个数据

那我们来看在这个过程中

MapReduce他用了什么样的这种调度策略

来满足大量的用户和大量的这个业务的要求

我们来讲几种比较典型

比较简单也是比较易于理解

这个系统的这样一些这个调度的方法

第一个叫做FIFO先进先出的调度策略

它怎么做的呢

我们来看在右上角

有一个任务的这样的一个队列在里面

用户会把他们需要处理的

MapReduce任务提交进来

那么在下面有一系列的这个服务器

他们可以成为worker去执行map

或者是reduce的任务

那我们来看当一个任务进来之后

我们会去做一些什么样的事情

有一个任务来了

那么在FIFO的这样一个调度底下

我们会把先到的任务所有执行完

包括所有的map和所有的reduce

完成之后再执行下一个任务

它的过程是这样的

我们会分配这些worker

让它们去承载map任务

然后map完了之后我们会去执行

然后会把中间结果

汇到这个reduce的节点上

并且把reduce的任务执行完

然后去完成下一个任务

那么下一个任务蓝色任务

到达之后它需要等

只有当第一个任务完全结束之后

那么第二个任务才能进入

到被调度的这样一个过程里去

那么第二个任务被调度起来

经过一段时间被执行结束

那么可以离开队列

那么这样的一个任务调度模式

实际上它是有一些缺陷的

比如说当这个需要调度任务它的

大小非常不一样的时候

比如说有几个很大的任务

在队列里面存在

同时又有不少小任务

需要等待执行

那这时候对小任务来说

它就非常的不公平

因为大任务可能动辄

就需要几个小时

甚至几天的时间去完成

而小任务通常

就只需要可能几分钟

或者几个小时就可以完成

那在这个过程中

实际小任务就需要等很长的时间

才能被调度起来

而这种小任务

通常会需要比较及时的这样一个反馈

那根据经验来说可能会是这样的

那么在这样一个背景下

这种调度实际上就会使得大任务

把小任务阻塞在了后面

是一个不是特别公平的

这样一个调度的一个模式

那么对它的一个改进

就是采用了一种叫做公平调度的

一个这种策略fair scheduling

那我们来看它是怎么样执行的

一个任务进入到了整个系统中

我们假设它是一个相对比较大的任务

那么当系统中没有其他任务的时候

系统会把这个任务它的map和reduce

分配到可以用的这些worker上

我们可以看到

已经分配到了这4台服务器上

那这时候

每台服务器都在执行

刚刚我们调度上的这个任务

那么这时候来了一个新的任务

我们假设这个任务相对小一些

他相对执行的速度

会快一些使用的资源会少一些

那这时候

如果按照FIFO先进先出的方式

它是得不到调度的

但是在我们现在讲的

这个公平调度的模式下

实际上它可以挤占掉一部分的资源

相对比较优先调度进来的这个任务

那我们可以看到在整个系统的状态

底下就会同时有两个任务

原来的大任务和现在小任务同时在运行

那么运行一段时间之后

我们发现小任务已经执行结束了

那这时候如果队列中

没有其他的任务再来争抢资源的话

大任务就可以恢复到

执行的一个状态被重新调度起来

那么这就是这个先进先出和公平调度

这两种调度算法它的一个差别

那实际上在今天的这个大数据系统

尤其是MapReduce这样的系统里面

实际上先进先出 公平执行

实际上都并不是企业

能够直接使用的这样一些策略

在企业的实际的大数据系统的实现当中

他们根据自身的业务

根据自己要处理的这种数据的模式

实际上还进行了

大量与业务相关与用户相关

甚至与公司的这种优先级相关的

一些调度策略的设计

使得MapReduce就能够更加动态

更加灵活的运行各种各样的任务

总之一句话

他们是想要满足每个任务它的

这样一个运行的效率

同时又能够满足每个任务运行之后

能够达到的一定的这种效益

一定的增益

然后在这两个条件同时满足的情况下

尽可能的把系统中

所有的计算机资源能够利用起来

这是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笔记与讨论

也许你还感兴趣的课程:

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