大数据导论思维第8章-大数据批处理-Hadoop-MapReduce课件.pptx
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《大数据导论思维第8章-大数据批处理-Hadoop-MapReduce课件.pptx》由用户(三亚风情)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据 导论 思维 批处理 Hadoop MapReduce 课件
- 资源描述:
-
1、 大数据导论第八章PART 01 MapReduce概述PART 02 Hadoop MapReduce架构CONTENTS目录PART 03 Hadoop MapReduce的工作流程PART 04 实例分析:单词计数CONTENTS目录PART 05 Hadoop MapReduce 的工作机制PART 06 Hadoop MapReduce的主要特点PART 07 Hadoop MapReduce编程实战PART 08 习题本节首先简单介绍大数据批处理概念,然后介绍典型的批处理模式MapReduce,最后对Map函数和Reduce函数进行描述。PART 01 MapReduce概述批处理
2、模式批处理模式是一种进行大规模数据处理的最早的模式。批处理主要操作大规模静态数据集,并在整体数据处理完毕后返回结果。批处理模式中使用的数据集通常符合下列特征:n 有界:批处理数据集代表数据的有限集合;n 持久:数据通常始终存储在某种类型的持久存储位置中;n 大量:批处理操作通常是处理超大规模数据集的唯一方法。需要处理大量数据的任务通常最适合用批处理操作进行处理。由于批处理在应对大量持久数据方面的表现极为出色,因此经常被用于对历史数据进行分析。批处理模式为了提高处理效率,对大规模数据集进行批处理需要借助分布式并行程序。分布式并行程序运行在大量计算机组成的集群上,从而可以同时利用多台计算机并发完成
3、同一个数据处理任务,提高了处理效率。同时,可以通过增加新的计算机扩充集群的计算能力。Google公司最先实现了分布式并行处理模式MapReduce,并于2004年以论文的方式对外公布了其工作原理。Hadoop MapReduce是它的开源实现。Google的MapReduce运行在Google的分布式文件系统GFS上;Hadoop MapReduce运行在分布式文件系统HDFS上。批处理模式 MapReduce简释思考:如何知道相当厚的一摞牌中有多少张红桃。MapReduce简释MapReduce方法则是:(1)把这摞牌分配给在座的所有玩家;(2)让每个玩家数自己手中的牌中有几张是红桃,然后把
4、这个数目汇报给你;(3)你把所有玩家告诉你的数字加起来,得到最后的结论。最直观的方式就是你通过一张张检查这些牌,并且数出有多少张是红桃。这种方法的缺陷是速度太慢,特别是当牌的数量特别高的情况下,获取结果的时间会很长。显而易见,MapReduce方法通过让所有玩家同时并行检查牌来找出一摞牌中有多少红桃,可以大大加快得多答案的速度。MapReduce简释MapReduce方法使用了拆分的思想,合并了两种经典函数:映射(Map):对集合中的每个元素进行同一个操作。如果想把表单里每个单元格乘以二,那么把这个函数单独地应用在每个单元格上的操作就属于映射(Map)。化简(Reduce):遍历集合中的元素来
5、返回一个综合的结果。如果想找出表单里所有数字的总和,那么输出表单里一列数字的总和这个任务就属于化简(Reduce)。MapReduce简释站在MapReduce角度,重新审视前面分散纸牌找出红桃总数的例子 玩家代表计算机,因为他们同时工作,所以他们是个集群。通过把牌分给多个玩家并且让他们各自数数,就是在并行执行运算,通过告诉每个人去数数,实际上就是对一项检查每张牌的任务进行了映射。还要注意的情况就是牌分配的是否均匀。MapReduce算法的机制要远比数牌复杂得多,但是主体思想是一致的,通过分散计算来分析大量数据。MapReduce基本思想使用MapReduce处理大数据的基本思想包括三个层面。
6、n 对大数据采取分而治之的思想n 构建抽象模型:Map和Reduce函数n 上升到构架:并行自动化并隐藏低层细节 MapReduce基本思想大数据处理思想:分而治之1 并行计算的第一个重要问题是:如何划分计算任务或者计算数据,以便对划分的子任务或数据块同时进行计算。一个大数据若可以分为具有同样计算过程的数据块,并且这些数据块之间不存在数据依赖关系,则提高处理速度的最好办法就是并行计算 但是,一些计算问题前后数据项之间存在很强的依赖关系,无法进行划分,只能串行计算。MapReduce基本思想大数据处理思想:分而治之1 例如:假设有一个巨大的2维数据,大的无法同时放进一个计算机的内存。现在需要求每
7、个元素的开立方。思考:因为对每个元素的处理是相同的,并且数据元素间不存在数据依赖关系,可以考虑不同的划分方法将其划分为子数组,由一组计算机并行处理。MapReduce基本思想构建抽象模型:Map和Reduce函数2 Map函数对一组数据元素进行某种重复式的处理,Reduce函数对Map的中间结果进行某种进一步的结果整理。MapReduce借鉴了函数式程序设计语言Lisp中的思想,定义了Map和Reduce两个抽象的编程接口,为程序员提供了一个清晰的操作接口抽象描述,由用户去编程实现。MapReduce基本思想构建抽象模型:Map和Reduce函数2p Map:(k1;v1)(k2;v2)输入:
8、键值对(k1;v1)表示的数据。处理:文档数据记录(如文本文件中的行,或数据表格中的行)将以“键值对”形式传入Map函数;Map函数将处理这些键值对,并以另一种键值对形式输出处理的一组键值对中间结果(k2;v2)。输出:键值对(k2;v2)表示的一组中间数据。MapReduce基本思想构建抽象模型:Map和Reduce函数2p Reduce:(k2;v2)(k3;v3)输入:由Map输出的一组键值对(k2;v2)将被进行合并处理将同样主键下的不同数值合并到一个列表v2中,故Reduce的输入为(k2;v2)。处理:对传入的中间结果列表数据进行某种整理或进一步的处理,并产生最终的某种形式的结果输
9、出(k3;v3)。输出:最终输出结果(k3;v3)。MapReduce基本思想构建抽象模型:Map和Reduce函数2各个Map函数对所划分的数据并行处理,从不同的输入数据产生不 同 的 中 间 结 果 输 出。各 个Reduce也各自并行计算,各自负责处理不同的中间结果数据集合。进行Reduce处理之前,必须等到所有的Map函数做完。因此,在进入Reduce前需要有一个同步障;MapReduce基本思想上升到构架:并行自动化并隐藏低层细节3 MapReduce提供一个统一的计算框架,完成计算任务的划分和调度,数据的分布存储和划分,处理数据与计算任务的同步,结果数据的收集整理,系统通信、负载平
10、衡、计算性能优化处理等,处理系统节点出错检测和失效恢复。MapReduce设计并提供了统一的计算框架,为程序员隐藏了绝大多数系统层面的处理细节,仅需要关心其应用层的具体计算问题,仅需编写少量的处理应用本身计算问题的程序代码。MapReduce基本思想上升到构架:并行自动化并隐藏低层细节3p MapReduce计算架构提供的主要功能包括如下几点:任务调度 数据/程序互定位 出错处理 分布式数据存储与文件管理 Combiner和Partitioner Map和Reduce函数MapReduce将复杂的、运行在大规模集群上的并行计算过程高度地抽象为两个简单的函数:Map和Reduce。Map函数的任
11、务就是把每一个输入的键值对映射成一个或一批新的键值对。Reduce函数的任务是将输入的一系列具有相同键的键值对以某种方式组合起来,然后输出处理后的键值对。Map操作就是对一些独立元素组成的概念上的列表的每一个元素进行指定的操作。Reduce操作指的是对一个列表的元素进行适当的合并。广义角度狭义角度 Map和Reduce函数把18个员工的表分成3个模块,每个模块包括6个员工,由一个Map负责处理,这样就可以比顺序处理的效率提高2倍。而在每一个Map函数中,对每个员工薪资处理操作都是完全相同的,增加10%。员工薪资列表中,每个员工的薪资都增加10%,采用Map函数该怎么完成?Map和Reduce函
12、数通过让列表中的元素跟自己的相邻的元素相加的方式把列表减半,如此递归运算直到列表只剩下一个元素,然后用这个元素除以人数,就得到了平均薪资。如果想知道员工的平均薪资是多少,该如何定义reduce函数?Map和Reduce函数Map函数和Reduce函数都是以作为输入,按一定的映射规则转换成另一个或一批进行输出。函数函数输入输入输出输出注解注解MapList()1)将输入数据集分解成一批对,然后进行处理;2)每一个输入,Map会输出一批。Reduce MapReduce框架会把Map的输出,按key归类为;List(v2)是一批属于同一个k2的value。Hadoop MapReduce是Hado
13、op平台的根据MapReduce原理实现的计算框架,目前已经实现了两个版本,MapReduce1.0和基于YARN结构的MapReduce2.0。PART 02 Hadoop MapReduce架构 Hadoop MapReduce架构首先以MapReduce 1.0介绍MapReduce的核心概念,然后再在此基础上介绍MapReduce 2.0。Hadoop MapReduce架构由一个单独的Master JobTracker 和每个集群节点一个Slave TaskTracker共同组成。Master负责调度构成一个作业的所有任务,这些任务分布在不同的Slave上,由Master监控它们的执
14、行,重新执行已经失败的任务。而Slave仅负责执行由Master指派的任务。Hadoop MapReduce架构MapReduce1.0的架构由Client(客户端)、JobTracker(作业跟踪器)、TaskTracker(任务跟踪器)、Task(任务)组成。p Client用户编写的MapReduce程序通过Client提交给JobTracker。Hadoop MapReduce架构p Job TrackerJobTracker主要负责资源监控和作业调度,并且监控所有TaskTracker与作业的健康情况,一旦有失败情况发生,就会将相应的任务分配到其他节点上去执行。p Task Trac
15、kerTaskTraker会周期性的将本节点资源使用和任务进度汇报给JobTracker,也就是“心跳”方式;与此同时会接受jobTracker发送过来的命令并执行操作。p TaskTask分为Map Task和Reduce Task两种,由TaskTracker启动,分别执行Map和Reduce任务。一般来讲,每个节点可以运行多个Map和Reduce任务。Hadoop MapReduce架构MapReduce设计的一个核心理念就是“计算向数据靠拢”,而不是传统计算模式的“数据向计算靠拢”。这是因为大量的移动数据需要的网络传输开销太大,同时也大大降低了数据处理的效率。所以,Hadoop Map
16、Reduce框架和分布式文件系统HDFS是运行在一组相同的节点上的。这种配置允许框架在那些已经存好数据的节点上高效地调度任务,这可以使整个集群的网络带宽被非常高效地利用,从而减少了节点间数据的移动。Hadoop MapReduce架构Hadoop的MapReduce与HDFS集群架构使用MapReduce其实就是“分而治之”算法的一种实现,将大的问题分解为相同类型的子问题(最好具有相同的规模),对子问题进行求解,然后合并成大问题的解。PART 03 Hadoop MapReduce工作流程Hadoop MapReduce的工作流程MapReduce就是将输入进行分片,然后交给不同的Map任务进
17、行处理,然后由Reduce任务合并成最终的解。p 实际的处理过程可以理解为 Input Map Sort Combine Partition Reduce OutputHadoop MapReduce的工作流程p 在Map阶段,框架调用Map函数对输入的每一个对进行处理,也就是完成map(k1,v1)-list(k2,v2)的映射操作。p 在Input阶段,就是根据数据的存储位置,把数据分成多个分片(Split)在多个节点上并行处理。p 在Sort阶段,当Map任务结束以后,会生成许多形式的中间结果,框架会对这些中间结果按照键进行排序。p 在Combine阶段,框架对于在Sort阶段排序之后有
18、相同键的中间结果进行合并。Hadoop MapReduce的工作流程p 在Partition阶段,框架将Combine后的中间结果按照键的取值的范围划分为R份,分别发给R个运行Reduce任务的节点,并行执行。p 在Reduce阶段,每个Reduce任务对Map函数处理的结果按照用户定义的Reduce函数进行汇总计算得到最后结果。p 在Output阶段,框架把Reduce处理的结果按照用户指定的输出数据格式写入HDFS。p 在MapReduce的整个处理过程中,不同的Map任务之间不会进行任何通信,不同的Reduce任务之间也不会发生任何信息交换。所有的信息交换都是通过MapReduce框架实
19、现的。单词计数是最简单也是最能体现MapReduce思想的程序之一,可以称为MapReduce版“Hello World”。PART 04 实例分析:单词计数设计思路首先,需要检查单词计数是否可以使用MapReduce进行处理1 因为在单词计数程序任务中,不同单词之间的出现的次数不存在相关性,相互独立,所以,可以把不同的单词分发给不同的机器进行并行处理。因此,可以采用MapReduce来实现单词计数的统计任务。其次,确定MapReduce程序的设计思路2 就是把文件内容分解成许多个单词,然后把所有相同的单词聚集到一起,最后计算出每个单词出现的次数。设计思路最后,确定MapReduce程序的执行
20、过程。3 首先把一个大的文件切分成许多个分片,每个分片将会输入到不同节点上形成不同的Map任务。每个Map任务完成从文件块中解析出所有单词的任务。Map的输入采用方式,用文件的行号作为key,文件的一行作为value。Map的输出以单词作为key,1作为value,即表示该单词出现了1次。Map阶段结束以后,会输出许多形式的中间结果。然后Sort会把这些中间结果进行排序并把同一单词的出现次数合并成一个列表,得到形式。比如,hello,就表明hello单词在5个地方出现过。设计思路最后,确定MapReduce程序的执行过程。3 如果使用Combine,那么Combine会把每个单词的List(v
21、alue)值进行合并,得到形式。比如,表明hello单词出现过5次。在Partition阶段,把Combine的结果分发给不同的Reduce任务。Reduce任务接收到所有分配给自己的中间结果以后,就开始执行汇总计算工作,计算得到每个单词出现的次数并把结果输出到HDFS中。处理过程下面通过一个实例对单词计数进行更详细的讲解。(1)首先,将文件拆分成多个分片。由于测试用的文件较小,只有4行,所以把该文件拆分成2个分片,每个分片包含2行内容。这一步由MapReduce框架自动完成,其中key的值为单词在文本中的偏移量。处理过程(2)将分割好的对交给用户定义的Map方法进行处理,生成新的对处理过程(
22、3)得到Map方法输出的对后,框架会将它们按照key值进行排序,并执行Combine过程,将key至相同value值累加,得到Map的最终输出结果。处理过程(4)Reduce先对从Map端接收的数据进行排序,再交由用户自定义的Reduce方法进行处理,得到新的对,并作为WordCount的输出结果。主要从MapReduce作业的执行流程和Shuffle过程方面进行阐述。通过加深对MapReduce工作机制的了解,可以使程序开发者更合理地使用MapReduce解决实际问题。PART 05 Hadoop MapReduce 工作机制Hadoop MapReduce作业执行流程Hadoop MapR
23、educe作业的执行流程中涉及到4个独立的实体p 客户端(Client):编写MapReduce代码,配置作业,提交作业;p JobTracker:初始化作业,分配作业,与TaskTracker通信,协调整个作业的执行;p TaskTracker:保持与JobTracker的通信,在分配数据片段上执行Map或Reduce任务;p HDFS:保存作业的数据、配置信息等,以及保存作业结果。Hadoop apReduce作业执行流程Hadoop MapReduce作业执行流程 提交作业客户端通过run job方法启动作业提交过程。客户端通过JobTracker的getNewJobId()请求一个新的
24、作业ID。客户端检查作业的输出说明,计算作业的输入分片等,如果有问题就抛出异常;如果正常,就将运行作业所需的资源(比如作业Jar文件,配置文件,计算所得的输入分片等)复制到一个以作业ID命名的目录中。通过调用JobTracker的submitJob()方法告知作业准备执行。初始化作业 JobTracker接收到对其submitJob()方法的调用后,就会把这个调用放入一个内部队列中,交由作业调度器进行调度;初始化主要是创建一个表示正在运行作业的对象,以便跟踪任务的状态和进程。Hadoop MapReduce作业执行流程 为了创建任务运行列表,作业调度器首先从HDFS中获取JobClient已计
25、算好的输入分片信息。然后为每个分片创建一个MapTask,并且创建ReduceTask。分配任务 TaskTracker定期通过“心跳”与JobTracker进行通信,主要是告知JobTracker自身是否还存活,以及是否已经准备好运行新的任务等;JobTracker接收到心跳信息,如果有待分配的任务,就会为TaskTracker分配一个任务,并将分配信息封装在心跳通信的返回值中返回给TaskTracker。Hadoop MapReduce作业执行流程 执行任务 TaskTracker分配到一个任务后,通过从HDFS把作业的Jar文件复制到TaskTracker所在的文件系统,同时TaskTr
展开阅读全文