当前课程知识点:高级大数据系统 > MapReduce > What is MapReduce and why > Video
今天我们讲一个重要的大数据处理的模式
叫做MapReduce
那么MapReduce目前被公业界广泛的使用
用来处理大规模的这个数据
用来进行并行的这样一个计算
那么成为了工业界在聊到大数据的时候的
一个实际的行业的一个数据计算的一个标准
那么我们在这一小节中会去介绍什么是MapReduce
以及为什么我们要用MapReduce
来进行数据的一个处理
那么为什么我们要设计专门的
大数据处理的这样一个模式呢
那它的一个背景是这样的
就是说我们有大量的数据需要去处理
那这些数据每天由用户
设备以及各种各样的数据源生成
那么在这样的一个过程中
使得我们在每天 每周
都需要处理海量的一个数据规模
今天对于一个大数据的企业来说
每天处理PB级 TB级
甚至更大的这样一个数据量
实际上是一个非常正常的一个常态
在数据处理的过程中
我们同时还想利用到大量的计算资源
因为我们有大量的服务器
我们有大量的集群
以及很强大的这样一个网络系统
我们想在这样的一个计算
和网络资源的背景下去对数据进行处理
而且整个过程还需要尽可能的简单
因为进行数据处理的这些人员
通常他并不是专业的程序员
或者是系统工程师
他只是普通的行业的这种专家
或者说是市场的这种分析师
那么他们并不具有很好的编程能力
这是为什么我们要让这样的数据处理平台
变得非常的简单的原因
那么通过对大量的这种大规模数据处理模式进行分析
我们就发现实际上大数据它的处理
有一些固定的这样一个模式
那么有哪些模式呢
经过Google以及其他企业的工程师
进行分析之后
对大数据处理的模式进行了一定的归纳
它大概有这样的一些模式
第一个就是说
我们通常需要在数据集上进行
反复迭代的这样一个操作
这对我们日常的这种体验实际上也是正常的
我们可能需要反复的观察一个数据集
反复地对它进行实验
那么在这个过程中通常是有下面的这几个步骤
第一个就是我们从原始的数据中
进行数据的一个提取
那这个过程叫做extract
我们从里面进行数据的一个浏览
然后从里面获取到一部分的我们感兴趣的信息
那么在第二个过程中实际上
我们是需要进行一个sort的过程排序的过程
我们会把感兴趣的信息
进行一定的序列的这样一个排序进行一定的整合
然后使相同类别的数据被放到一块进行处理
后面一步就是进行一个aggregation整合的一个操作
我们通过第一步对数据顺序的一个获取
第二步进行一个排序
第三步进行一个整合
实际上就完成了
我们今天进行的大量的这种数据处理模式的
很大的一部分
而这个模式进行排列组合之后
可以产生非常复杂的数据处理的这样一个流程
最后经过整合之后我们对数据进行输出
那么在这样的一个过程的背景下
那么工程师就开始思考
到底怎么样去设计一个通用的 简单的
而且非常鲁棒的这样一个数据处理的一个模式
那么MapReduce是在这样的背景下提出来的
他是google的工程师
在2000年左右
在我们之前说到的分布式文件系统的基础上给出来的
那MapReduce它是怎么样定义的呢
我们来看一看
首先它的目标是去处理大规模的数据集
那这个数据及会非常的大
那么在最开始的设计的背景下它的目标是要去处理
每天能够超过这个上千pb级的这样一个数据规模
同时他把MapReduce分成了
两个最基本的数据处理的过程
或者叫做单元map和reduce两个阶段
那么在这两个阶段又会需要填充一定的代码
给出一定的功能进行比较单元化的这种数据的操作
那么MapReduce它同时提供了
底层的这样一个系统的支持
并行的这样一个数据处理的一个支持
上层的操作人员程序员
不需要知道底层系统网络和存储是怎样构成的
他就可以让他的任务
在成千上万台服务器上去并发的执行
同时整个系统还需要能够处理各种各样的数据失败
那么这整个过程实际上
它是并行的对于上层的程序员来说是完全透明的
并不需要知道底层发生了什么事情
在整个过程中
我们的这个MapReduce的系统
还要能够处理各种各样的失败
比如说服务器可能会坏掉
硬盘可能会坏掉
那网络可能会不通
在整个过程当中他应该能够非常健壮的生存下去
那么我们来看看MapReduce
它到底有着怎么样的一个结构
以及它的这样一个数据处理的模式是怎么样的
那么MapReduce它的这个结构
实际上是非常的简单的
他是一个这种functional的
这种程序化的一个语言功能程序化的语言
那么在它的这个语言当中包含了
我们刚刚说到map和reduce两个简单的阶段
同时它是一个批量对数据处理的这样一个编程的一个模式
那么在这个过程中数据会一批一批
然后经过迭代的方式得到处理
那么这是MapReduce
它的一个简单的一个架构的一个情况
在这里面我们用了Hadoop他的这个语言进行描述
在上面有一系列的这个name node
管理了整个系统中的各种各样的数据
那么我们之前说到这种分布式文件系统里面的数据
实际上在这样的一个背景下
在这样一个框架下已经被管理了起来
那么在这之上我们给他增加了计算能力
也就构成了MapReduce的这样一个计算的模式
那这些节点
同时具有了这个数据
也具有了可以去处理数据的这种逻辑
那么形成了一个分布式的数据处理的一个框架
那简单的我们可以看到它是有一个中心的
管理整个任务的这样一个Job Tracker
以及分布式的一系列的来管理
具体的计算任务的这个Task Tracker组成的
我们会在后面的这个介绍中具体展开
那么MapReduce中核心的两个阶段
是map和reduce两个阶段
那在这里我们给出了这两个阶段
实际它发生了一些什么事情
在map里面实际上我们会把数据输入
而我们的数据已经被我们抽象成了
一系列具有key和value的这样的数据的这样一个原子
那么map的任务
就是将这样的key和value的原始数据把它变成中间的结果
那中间结果同样具有key和value这样的属性
只不过这个key和value
和你读入进来的key和value不一定一样
那么具体要做什么呢
是我们的程序员我们的数据分析师要去做的事情
那么reduce阶段就是将这个map阶段生成的
中间的这个key和中间的value这些结果作为输入
然后进一步生成
最终我们需要的结果也是一个key和value这样的一个数据集
那这样的一个过程实际上
满足了我们刚刚在前面提到的
对数据处理的基本上
需要的那个数据读取数据排序
以及数据整合3个过程的一个需求
那么在MapReduce中
它还提供了哪一些这种健壮性的支持呢
首先呢程序员不需要去知道整个任务
需要分成多少份需要在哪些节点上运行
它的分布话是自动进行的
第二程序员和数据工程师
他并不需要管理这个系统的失败
节点坏了、硬盘坏掉、甚至网络不通
那么都会有整个MapReduce的系统自发的来处理
同时它还提供了一系列用来查看任务运行
以及整个系统健康情况的一些工具
来帮助用户能够了解系统运行的一个状态
那么最后他给程序员提供了一个非常干净
和简单的这样一个编程的模型
仅仅两个阶段就可以完成
比较复杂的数据处理的过程
这是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--作业