当前课程知识点:高级大数据系统 > MapReduce > Hadoop > 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调度的过程中
他们需要去考虑的事情
-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
-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--作业
-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--作业
-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
-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--作业
-Introduction to streaming data processing
--Video
-Introduction to streaming data processing--作业
-Storm
--Video
--Video
--Video
-Storm--作业
-Spark streaming
--Video
--Video
-Spark streaming--作业
-NoSQL introduction
--Video
-NoSQL introduction--作业
-Common Advantages
--Video
-Common Advantages--作业
-Bigtable
--Video
-Bigtable--作业
-Master Startup
--Video
-Master Startup--作业
-HBase
--Video
-HBase--作业
-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--作业
-Mahout
--Video
-Mahout--作业
-Case Study: Recommendation
--Video
-Case Study: Recommendatio作业
-Recommendation in Mahout
--Video
-Recommendation in Mahout--作业