单元5 任务5.1-认识MapReduce_第1页
单元5 任务5.1-认识MapReduce_第2页
单元5 任务5.1-认识MapReduce_第3页
单元5 任务5.1-认识MapReduce_第4页
单元5 任务5.1-认识MapReduce_第5页
已阅读5页,还剩18页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

《大数据平台部署与运维》单元5MapReduce实现电商销售数据统计任务5.1认识MapReduce01理解MapReduce的原理与体系架构02掌握YARN运行机制学习目标任务5.1认识MapReduce【任务场景】经理:小张,我们后台数据量越来越大,服务器计算性能不佳,计算效率是个问题,你有什么好的建议吗?小张:Hadoop的核心组件MapReduce可以用来做大规模数据集的并行运算,我们已经有了Hadoop集群,不妨试试MapReduce。经理:嗯,没错,MapReduce可以并行拆分和处理TB级数据,运行在普通服务器组成的集群上也能保证快速高效地处理海量数据,你先了解一下MapReduce的原理和运行机制吧。小张:好的。任务5.1认识MapReduce【任务布置】MapReduce的运行依赖于JDK和Hadoop,因此必须将Hadoop的基础环境提前安装好,才能进行MapReduce的运行和操作。本任务要求在前面已经完成安装部署Hadoop平台的node1节点上完成,要求理解MapReduce的原理和体系架构;理解YARN运行机制;最终在node1上运行MapReduce自带的单词计数程序,查看运行结果。任务5.1认识MapReduce5.1.1MapReduce介绍MapReduce是一种分布式计算模型,由Google提出,起初主要用于搜索领域,解决海量数据的计算问题。MapReduce是Hadoop框架内的一种编程模型,用于访问存储在Hadoop文件系统(HDFS)中的大数据,它是一个核心组件,是Hadoop框架功能不可或缺的一部分。MapReduce是面向大数据并行处理的计算模型、框架和平台,它隐含了以下三层含义:(1)MapReduce是一个基于集群的高性能并行计算平台(ClusterInfrastructure)。(2)MapReduce是一个并行计算与运行软件框架(SoftwareFramework)。(3)MapReduce是一个并行程序设计模型与方法(ProgrammingModel&Methodology)。任务5.1认识MapReduceMapReduce原理(1)基本概念用一个比较形象的例子解释MapReduce:我们要数图书馆中的所有书。你数1号书架,我数2号书架。这就是“Map”。我们人越多,数书就更快。现在我们到一起,把所有人的统计数加在一起。这就是“Reduce”。MapReduce由两个阶段组成:Map(映射)和Reduce(归纳),用户只需要实现map()和reduce()两个函数,即可实现分布式计算。这两个函数的形参是key、value对,表示函数的输入信息。任务5.1认识MapReduceMapReduce原理(2)映射和归纳简单说来,一个映射函数就是对一些独立元素组成的概念上的列表的每一个元素进行指定的操作。事实上,每个元素都是被独立操作的,而原始列表没有被更改,因为这里创建了一个新的列表来保存新的答案。这就是说,Map操作是可以高度并行的,这对高性能要求的应用以及并行计算领域的需求非常有用。而归纳操作指的是对一个列表的元素进行适当的合并。虽然它不如映射函数那么并行,但是因为化简总是有一个简单的答案,大规模的运算相对独立,所以化简函数在高度并行环境下也很有用。任务5.1认识MapReduceMapReduce优势(1)易于理解MapReduce通过抽象模型和计算框架把需要做什么和具体做什么分开了,为开发者提供了一个抽象和高层的编程接口和框架,开发者仅需关心其他应用层的具体计算问题,大大降级了开发者使用时的心智负担。

(2)良好的扩展性基于MapReduce的计算性能可以随节点数目增长保持近似于线性的增长,这个特点是MapReduce处理海量数据的关键,通过将计算节点增至几百或者几千可以很容易地处理数百TB甚至PB级别的离线数据。

(3)分布可靠MapReduce通过把对数据集的大规模操作分发给网络上的每个节点实现可靠性;每个节点会周期性地返回它所完成的工作和最新状态。如果一个节点保持沉默超过一个预设的时间间隔,主节点记录下这个节点状态为死亡,并把分配给这个节点的数据发到别的节点。

任务5.1认识MapReduce5.1.2

MapReduce体系架构MapReduce1.0

采用了Manager/Worker(M/W)架构。它主要由以下几个组件组成:Client、JobTracker、TaskTracker和Task。任务5.1认识MapReduceMapReduce1.0体系架构介绍(1)Client用户编写的MapReduce程序通过Client提交到JobTracker端

;同时,用户可通过Client提供的一些接口查看作业运行状态。(2)JobTrackerJobTracker主要负责资源监控和作业调度。(3)TaskTracker

TaskTracker会周期性地通过Heartbeat(心跳检测)将本节点上资源的使用情况和任务的运行进度汇报给JobTracker,同时接收JobTracker发送过来的命令并执行相应的操作(如启动新任务、杀死任务等)。(4)TaskTask分为MapTask和ReduceTask两种,均由TaskTracker启动。任务5.1认识MapReduceMapReduce2.0体系架构Hadoop2.0新引入的资源管理系统,是直接从MapReducev1演化而来的;核心思想:将MapReducev1中JobTracker的资源管理和任务调度两个功能分开,分别由ResourceManager和进程实现。任务5.1认识MapReduceMapReduce2.0体系架构介绍(1)Client与MapReducev1的Client类似,用户通过Client与YARN交互,提交MapReduce作业,查询作业运行状态,管理作业等。(2)ResourceManagerResourceManager是一个全局的资源管理器,负责整个系统的资源管理和分配。它主要由两个组件构成:调度器和应用程序管理器。(3)NodeManagerNodeManager是每个节点上的资源和任务管理器,一方面,它会定时地向ResourceManager汇报本节点上的资源使用情况和各个Container的运行状态;另一方面,它接收并处理来自ApplicationMaster的Container启动/停止等各种请求。任务5.1认识MapReduceMapReduce2.0体系架构介绍(4)ApplicationMaster

ApplicationMaster功能类似于1.0中的JobTracker,但不负责资源管理。功能包括:任务划分、任务调度、任务状态监控和容错。(5)ContainerContainer是YARN中的资源抽象,它封装了某个节点上的多维度资源,如内存、CPU、磁盘、网络等,当ApplicationMaster向ResourceManager申请资源时,ResourceManager为ApplicationMaster返回的资源便是用Container表示的。(6)MapTask/ReduceTaskMapTask/ReduceTask周期性向ApplicationMaster汇报心跳。一旦Task挂掉,则ApplicationMaster将为之重新申请资源,并重新运行。任务5.1认识MapReduceMapReduce任务执行过程(1)Map任务执行过程MapTask执行过程如下图所示。由该图可知,MapTask先将对应的split迭代解析成一个个key/value对,依次调用用户自定义的map()函数进行处理,最终将临时结果存放到本地磁盘上,其中临时数据被分成若干个partition(分片),每个partition将被一个ReduceTask处理。任务5.1认识MapReduceMapReduce任务执行过程(2)Reduce任务执行过程ReduceTask执行过程如下图所示。该过程分为三个阶段:①从远程节点上读取MapTask中间结果(称为“Shuffle阶段”);②按照key对key/value对进行排序(称为“Sort阶段”);③依次读取<key,valuelist>,调用用户自定义的reduce()函数处理,并将最终结果存到HDFS上(称为“Reduce阶段”)。任务5.1认识MapReduce5.1.3MapReduce发展现状以前,在Google,MapReduce用在非常广泛的应用程序中,MapReduce实现以后,它被用来重新生成Google的整个索引,并取代老的adhoc程序去更新索引。Hadoop解决了有无问题。很快人们发现MapReduce复杂度很高,即使技术实力强大如Facebook都很难写出高效正确的MapReduce程序。此外除了解决批处理问题,人们需要Hadoop能解决其遇到的交互式查询任务。为此,Facebook开发了Hive,该项目快速流行起来,到现在还有很多用户。Facebook当时更是高达95%的用户使用Hive而不是裸写MapReduce程序。但是MapReduce的思想和技术原理还是值得我们学习。马里兰大学教授、2010年出版的《Data-IntensiveTextProcessingwithMapReduce》一书的作者JimmyLin在书中提出:MapReduce改变了我们组织大规模计算的方式,它代表了第一个有别于冯·诺依曼结构的计算模型,是在集群规模而非单个机器上组织大规模计算的新的抽象模型上的第一个重大突破,是到所见到的最为成功的基于大规模计算资源的计算模型。任务5.1认识MapReduce5.1.4YARN运行机制Hadoop主要组件有HDFS和YARN,HDFS是分布式文件系统,主要是进行文件的存储,而YARN是Hadoop集群资源管理系统,支持分布式计算模式。YARN上运行一个应用的步骤:(1)客户端联系资源管理器,要求运行一个applicationmaster进程。(2)资源管理其找到一个能够在容器启动applicationmaster的节点管理器。(3)applicationmaster运行后,根据应用本身向资源管理器请求更多容器。(4)资源管理器给applicationmaster分配需要的资源后,applicationmaster在对应资源节点管理器启动容器,节点管理器获取任务运行需要的resources后,在该容器运行任务。任务5.1认识MapReduceYARN调度理想情况下YARN应用发出资源请求会立刻给予满足,但现实是资源是有限的,通常需要等待才能得到所需资源,因此YARN提供多种调度器和可配置策略来供选择。(1)FIFO调度器FIFO调度器将应用放置在一个队列中,按照提交顺序运行应用,首先为队列中第一个应用请求分配资源,第一个应用请求被满足后再依次为队列下一个应用服务。(2)容器调度器(CapacityScheduler)

使用容量调度器时,一个独立的专门队列保证小作业一提交就启动,由于队列容量是为固定队列中作业所保留的,这种策略是以整个集群利用率为代价,相比于FIFO调度器相比,大作业执行时间更长。(3)公平调度器(FairScheduler)

使用公平调度器时,不需要预留一定资源,调度器会在所有运行的作业之间动态平衡资源。任务5.1认识MapReduce【工作流程】1.新建本地文件,编辑文件内容。2.上传文件到hdfs。3.运行自带jar包,查看运行结果。任务5.1认识MapReduce【操作步骤】1.

在本地/home/hdfs目录下新建文件hello。文件中输入如下内容2.

将hello文件上传至HDFS根目录下:3.运行jar包。在Hadoop的安装目录下有一个示例jar包,地址为:/usr/local/hadoop/share/hadoop/mapreduce/hadoop-mapreduce-examples-3.1.1.jar,里面有很多框架自带的例子。使用以下命令查看jar包中包含的例子:使用以下命令运行自带的wordcount程序:[root@master01/]#mkdir/home/hdfs[root@master01/]#cd/home/hdfs[root@master01/]#vimhelloHelloHDFSHelloMapReduce[root@master01/]#hdfsdfs-put/home/hdfs/hello/[root@master01/]#hadoopjarhadoop-mapreduce-examples-3.1.1.jar[root@master01/]#hadoopjarhadoo

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论