




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第5章MapReduce学习目标
·了解MapReduce技术
·掌握MapReduce的编程模型
·了解MapReduce数据流
·了解MapReduce的任务流程
1.什么是MapReduce
简单来说,MapReduce是一种思想,或是一种编程模型。对Hadoop来说,MapReduce是一个分布式计算框架,是它的一个基础组件,当配置好Hadoop集群时,MapReduce已包含在内。下面先举个简单的例子来帮助大家理解一下什么是MapReduce。假设有一个大型的文学作品集合,我们想要统计每个作者写了多少篇文章。传统的方式是读取每篇文章,逐个搜索作者信息,然后逐个累加。这个过程需要消耗大量的时间和计算资源。利用MapReduce技术,我们可以将这个过程分为两个步骤。第一步是Map过程,即将每篇文章中的作者信息提取出来,形成一个键值对。键是作者名,值是1。第二步是Reduce过程,即将相同作者的键值对聚合起来,将对应值相加,得到每个作者写作的文章数目。在这个过程中,我们可以运用中国文化中的“协作精神”,将Map和Reduce过程分别交给不同的“部门”进行处理,最终达到共同完成任务的目标。同时,我们还可以通过对Map和Reduce过程的调优,体现中国的“精益求精”和“大同小异”思想,不断提高MapReduce的处理效率和性能。1.什么是MapReduce
MapReduce是一种“分而治之“的思想,即把一个大而重的任务拆解开来,分成一系列小而轻的任务并行处理,这样就使得任务可以快速解决。从业界使用分布式系统的变化趋势和Hadoop框架的长远发展来看,MapReduce的JobTracker/TaskTracker机制需要大规模的调整来修复它在可扩展性,内存消耗,线程模型,可靠性和性能上的缺陷。在过去的几年中,Hadoop开发团队做了一些bug的修复,但是最近这些修复的成本越来越高,这表明对原框架做出改变的难度越来越大。为了从根本上解决旧MapReduce框架的性能瓶颈,促进Hadoop框架的更长远发展,从0.23.0版本开始,Hadoop的MapReduce框架完全重构,发生了根本的变化。新的HadoopMapReduce框架出现了,从初期的MapReduceV1(MRv1)到MapReduceV2(MRv2),MRv2增加了YARN,YARN是资源管理和任务调度的框架,很好地减轻了MRv1的JobTracker的压力。1.什么是MapReduceMapReduce程序转变输入数据元素列表成输出数据元素列表。1.什么是MapReduceMapReduce程序的第一步叫做mapping1.什么是MapReduceReducing把数据聚集在一起。reducer函数接收来自输入列表的迭代器2.MapReduce编程模型简单模型HadoopMapReduce编程模型主要由两个抽象类构成,即Mapper和Reducer。Mapper用以对切分过的原始数据进行处理,Reducer对Mapper的结果进行汇总,得到最后的输出,2.MapReduce编程模型复杂模型对于大部分任务来说,都是需要Reduce过程的,并且由于任务繁重,会启动多个Reducer(默认为1,根据任务量可由用户自己设定合适的Reducer数量)来进行汇总,如图5-4所示。如果只用一个Reducer计算所有Mapper的结果,会导致单个Reducer负载过于繁重,形成性能瓶颈,大大增加任务的运行周期。2.MapReduce编程模型Key值归并
3.MapReduce数据流mapping任务平等,Mapper无特定标识,处理任意输入每个mapper本地进行中间值交换,同键值送到同一个reducer。唯一的结点通信数据传送由平台处理高层MapReduce工作流水线3.MapReduce数据流
3.MapReduce数据流
输入文件:任务的初始存储地输入格式:inputFormat定义了如何分割和读取输入文件。选择对象划分为inputSplits每个InputSplit一个map任务为RecordReader读取文件提供一个工厂方法输入格式描述键值TextInputFormat默认格式,读取文件的行行的字节偏移量行的内容KeyValueInputFormat把行解析为键值对第一个tab字符前的所有字符行剩下的内容SequenceFileInputFormatHadoop定义的高性能二进制格式用户自定义用户自定义3.MapReduce数据流输入块InputSplit:文件拆分成块Mapred-default.xml设置块大小输入格式定义了组成mapping阶段的map任务列表,每个任务对应一个输入块。据InputSplit地址分配任务(最大任务数mapred.tasktracker.map.tasks.maximum)3.MapReduce数据流RecordReader访问InputSplit转换为适合mapper读取的kv对RecordReader实例由输入格式定义的默认的输入格式TextInputFormat提供LineRecordReader偏移量-键;行-值RecordReader会在输入块上被重复的调用直到整个输入块被处理完毕,每一次调用RecordReader都会调用Mapper的map()方法。3.MapReduce数据流TextInputFormat演示3.MapReduce数据流给定一个键值对,map()方法会生成一个或多个键值对OutputCollector对象collect()的方法,利用该方法把键值对送到作业的reduce阶段。3.MapReduce数据流WordCountMapperMap过程3.MapReduce数据流Shuffle:移动map输出到reducer的过程叫做Partitons:每一个reduce节点会分派到中间输出的键集合中的一个不同的子集合Partitioner类决定键值对去向,默认分类器计算键哈希值3.MapReduce数据流Mapper端shuffle–spill操作3.MapReduce数据流Mapper端shuffle–partition操作Partiton&Shuffle3.MapReduce数据流Mapper端shuffle演示(本演示内容很少,只有一个Reducer,没必要进行Partition操作)3.MapReduce数据流Reducer端shuffle3.MapReduce数据流Reducer端shuffle演示(如果设置了combine,在mergesort时会进行相应操作)3.MapReduce数据流每个reduce任务都会创建一个Reducer实例reducer的reduce()方法只会调用一次,它会接收一个键和关联到键的所有值的一个迭代器,迭代器会以一个未定义的顺序返回关联到同一个键的值。3.MapReduce数据流WordCountReducer3.MapReduce数据流键值对通过OutputCollector被写到输出文件中,写入的方式由输出格式控制。每一个reducer会把结果输出写在公共文件夹中一个单独的文件内,这些文件的命名一般是part-nnnnn,nnnnn是关联到某个reduce任务的partition的id输出格式描述TextOutputFormat默认的输出格式,以"key\tvalue"的方式输出行SequenceFileOutputFormat输出二进制文件,适合于读取为子MapReduce作业的输入NullOutputFormat忽略收到的数据,即不做输出
3.MapReduce数据流TextOutputFormat演示4.MapReduce任务流程整体流程图MRV2YARNMRV2+YARN4.MapReduce任务流程客户端用于向Yarn集群提交任务MRAppMaster为ApplicationMaster的一个实现,它监控和调度一整套MR任务流程,每个MR任务只产生一个MRAppMaster。MRAppMaster只负责任务管理,并不负责资源的调配。用户定义的Map函数和Reduce函数的实例化,在MRv2中,它们只能运行在Yarn给定的资源限制下,由MRAppMaster和NodeManage协同管理和调度。MRv2基本组成:4.MapReduce任务流程Yarn基本组成:RM:为整个集群的资源调度器ResourceSchedule:当有应用程序已经注册需要运行时,ApplicationMaster会向它申请资源,而它会根据当时的资源和限制进行资源分配,它会产生一个container资源描述。ApplicationsManager:它负责管理整个集群运行的所有任务,包括应用程序的提交、ResourceSchedule协商启动和监控ApplicationMaster,并在ApplicationMaster任务失败时在其他节点重启它4.MapReduce任务流程Yarn基本组成:负责对一个任务流程的调度、管理,包括任务注册、资源申请以及和NodeManage通信以开启和杀死任务等。运行于datanode,监控并管理单个节点的计算资源,并定时向RM汇报节点的资源使用情况,当节点上有任务时,还负责对container进行创建、运行状态的监控及最终销毁。Yarn架构下对运算资源的一种描述,它封装了某个节点的多维度资源,包括cpu、ram、disk、network等。当AM向RM申请资源时,RM分配的资源就是以container表示的,Maptask和ReduceTask只能在所分配的container描述限制中运行。4.MapReduce任务流程client向ResourceManager提交任务ResourceManager分配该任务的第一个container,并通知相应的NodeManager启动MRAppMaster。4.MapReduce任务流程NodeManager接受命令后,开辟一个container资源空间,并在container中启动相应的MRAppMaster。4.MapReduce任务流程MRAppMaster启动之后,第一步会向ResourceManager注册,这样用户可以直接通过MRAppMaster监控任务的运行状态;之后则直接由MRAppMaster调度任务运行,重复5~8,直到任务结束。4.MapReduce任务流程MRAppMaster以轮询的方式向ResourceManager申请任务运行所需的资源。4.MapReduce任务流程一旦ResourceManager配给了资源,MRAppMaster便会与相应的NodeManager通信,让它划分Container并启动相应的任务(MapTask或ReduceTask)。4.MapReduce任务流程NodeManager准备好运行环境,启动任务。4.MapReduce任务流程各任务运行,并定时通过RPC协议向MRAppMaster汇报自己的运行状态和进度。MRAppMaster也会实时地监控任务的运行,当发现某个Task假死或失败时,便杀死它重新启动任务。4.MapReduce任务流程任务完成,MRAppMaster向ResourceManager通信,注销并关闭自己。5.MapReduce的Streaming和PipeHadoopStreamingHadoopStreaming可以将任何可执行的脚本或二进制文件封装成Mapper或Reducer,可以大大提高MapReduce程序的开发效率。Streaming启动的MR作业使用标准输入输出与用户的MapReduce进行数据传递,所以要求用户编写的程序必须以标准输入作为数据入口,标准输出作为数据出口。
使用Streaming时,用户需要提供两个可执行文件,一个用于Mappper,一个用于Reducer,当一个可执行文件被用于Mapper或Reducer时,在初始化时,它们会作为一个单独的进程启动,而Mappper和Reducer则充当封装传递角色,把输入切分成行,传给相应的可执行文件
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 宁波浙江宁波市育才小学非事业编制教师招聘笔试历年参考题库附带答案详解
- 威海2025年山东威海市教育局直属学校引进急需紧缺人才73人笔试历年参考题库附带答案详解
- 天津2025年天津市经济发展研究院招聘笔试历年参考题库附带答案详解
- 嘉兴浙江嘉兴平湖市文化和广电旅游体育局下属事业单位编外人员招聘笔试历年参考题库附带答案详解-1
- 电影宣传在社交平台上的传播行为研究
- 现代农场管理信息系统的技术基础与构建
- 2025至2030年中国低密度PU高回弹泡沫组合料数据监测研究报告
- 2025年度文化演出活动组织与运营合同
- 普通自用房屋租房合同8篇
- 2025年度保鲜库仓储物流安全管理合同
- 肺结核共45张课件
- JJF-1356-2012重点用能单位能源计量审查规范释文
- Unit 1 Lesson 1语法-过去完成时态-高中英语北师大版必修第一册
- 小学语文人教四年级上册(统编2023年更新)第四单元-教学设计《神话中的“偷窃者”》
- 变应性真菌性鼻窦炎的影像表现
- 一例烫伤病人伤口护理个案分享
- 钢栈桥设计计算书
- 贸易术语案例讨论题汇总
- 建筑工地紧急事件处理流程图
- 中山市培养引进紧缺适用人才导向目录(2011-2012年)
- 小学三年级下册开学语文老师家长会发言
评论
0/150
提交评论