基于Hadoop的研究及性能分析.docx
- 文档编号:3180794
- 上传时间:2022-11-19
- 格式:DOCX
- 页数:11
- 大小:270.15KB
基于Hadoop的研究及性能分析.docx
《基于Hadoop的研究及性能分析.docx》由会员分享,可在线阅读,更多相关《基于Hadoop的研究及性能分析.docx(11页珍藏版)》请在冰豆网上搜索。
基于Hadoop的研究及性能分析
基于Hadoop的研究及性能分析
基于Hadoop的研究及性能分析
摘要
在大数据到来的今天,本文首先介绍了Hadoop及其核心技术MapReduce的工作原理。
详细讨论了Hadoop推测执行算法和SALS推测执行算法并对它们的性能进行分析。
最后,分析了MapReduce框架的通用二路连接算法RSJ。
为了提高性能,提出了一种基于DistributedCache的改进算法,通过减少mapper输出的数据来达到优化的目的。
关键字:
HadoopMapReduce性能算法
Abstract:
Intheeraofbigdata,thispaperintroducesHadoop,MapReduceanditscoretechnologyworks.IhavediscussedtheHadoopspeculativeexecutionalgorithmsandSALSspeculativeexecutionalgorithmandanalyzedtheirperformance.Finally,IanalyzedtheCommonRoadJoinAlgorithminMapReduceframework.Toimproveperformance,IproposeanimprovedalgorithmbasedDistributedCachebyreducingthemapperoutputdatatoachieveoptimizationpurposes.
Keywords:
Hadoop;MapReduce;Performance;Algorithm
有效性:
通过数据分发,Hadoop可以在不同的节点上并行处理数据,这使得数据处理过程大大提速。
可靠性:
Hadoop自动维护一份数据的多个拷贝并自动将失败的计算任务进行重新部署。
2.2、Mapreduce简介
2.2.1、Mapreduce编程框架
HadoopMapReduce也是一个Master/Slave式的架JobTracker只有一个,并且为主服务器(如同HDFS中的NameNode),主要负责任务的调度和管理工作。
TaskTracker可以有多个,每个TaskTracker运行在一个节点上,是真正执行任务的地方。
JobTracker负责把Map和Reduce任务分配给空闲的TaskTracker进行处理。
如果在执行过程中某个TaskTracker出现故障,则JobTracker负责把该节点上的任务分配给其他的
TaskTracker任务重新运行。
下面首先详细介绍了MapReduce模型的设计原理,然后介绍Hadoop系统中MapReduce的工作流程。
2.2.2、Mapreduce工作原理
根据上述思想MapReduce被抽象成Map和Reduce两个阶段。
在实际的编程实现中,程序员只需要实现这map()和reduce()两个函数即可,其中Map阶段对应分的过程。
MapReduce编程框架将为输入数据集的每个分片分配一个Map任务,并且在集群中各任务对分片的处理是并发的。
每一个Map任务的输入为对应分片中key/value的集合,根据用户自定义的map()方法生成中间结果key/value的集合,再将中间结果中相同key的value进行合并传递给reduce()方法。
然后,再根据用户自定义的reduce()方法对传进来的具有相同key的value集合进行处理,得到最终的结果。
如下图1中给出了MapReduce的流程示意图。
从图中看到除了上述介绍的Map和Reduce阶段之外,中间还有一个Combiner阶段,不过这一阶段是可选择的。
图1Mapreduce的执行流程图
3、Hadoop推测执行算法的研究及性能分析
为了提高Hadoop作业的执行效率,Hadoop会采取--些优化策略,其屮Hadoop推测执行算法就是提高作业效率的一种很有效的策略。
但是在异构环境下,不建议启动Hadoop推测执行算法。
因为在异构环境下启动推测执行策略不仅不会提高作业的效率,反而会降低作业的效率。
木节将对Hadoop推测执行算法进行研究、分析,使其在异构环境中提Hadoop作业执行的效率。
3.1、Hadoop推测执行算法原理
MapReduce将待执行的作业分削成一些小分片,并行执行这分片,提高作业的运行效率,使得作业的整体运行时问小于顺序运行时间。
当作业被提交到MapReduce后,该作业的执行过程对用户来说就是透明的,但是如果该作业分片遇到的执行节点可用执行能力较低,这些作业分片被称为抄队者。
为了使更快的完成计算,MapReduce会启动另外一个运行较快的数掘节点运行掉队者,以缩短该作业在MapReduce中的执行时间。
将MapReduce的这种机制称为推测执行(speculationexecution),被推测执行的任务称为后背任务。
掉队者产生的原因很多,如硬件故障或配置错误等。
俱Google统计,在集群同构的情况下,使用推测执行可以将响应时间提高到44%。
然而,而对这种现存的构集群,改排测机制的效率不复存在。
据调查[6],在构环境中使用推测执行算法,会造成过度执行掉队者任务,导致具有比不执行该算法有更差的性能。
有些实验甚至出现80%的正常任务被判断为掉队者而被重新执行。
Hadoop推测执算法的核心思想是:
(1)使用(0,1)之间的分数作为任务的进度分数,使用该分数值标识任务的进度情况。
Hadoop推测执行算法的进度分数包括Map进度分数和Reduce进度分数两种情况,在Map阶段中,执行进度=已完成的数据/输入的数据。
在Reduce阶段中,将任务分为输入的数据复制阶段、排序阶段、归并阶段,每个阶段均占任务进度的1/3。
在任务的各个阶段中都会计算出一个进度分数,该分数代表着任务完成的情况。
例如,当任务完成到排序的一半时,该任务的进度分数为1/3+(1/2)*(1/3)=1/2,当完成归并的四分之一时,该任务的进度分数为1/3+1/3+(1/4)*(1/3)=1/4。
(2)根据定义的阈值判断掉队者
当作业的所有任务都开始执行时,JobTracker会分别计算出Map和Reduce的平均进度分数,并设置阀值,定义该阀值为平均进度的分数值减去0.2,如果某个任务同时满足进度分数低于阀值和至少执行了一分钟这两个条件,那么便标记该任务为掉队者。
(3)使用Hadoop推测执行算法执行后备任务
JobTracker会启动一个效率高的执行节点执行该备份任务,若其中一个先执行完,另一个将被杀掉。
因为在同构环境中,Hadoop调度程序的特点是某个后备任务在某个时刻只会被执行一次,且同一批任务基本在同一时间段内开始和结束,其中的掉队者是在该批任务结束后被推测执行,所以Hadoop使用上述方法不会出现重复执行掉队者的情况,故使用该阀值判断掉队者的方法是合理的。
3.2、SALS推测执行算法
在Hadoop推测执行算法中,如果系统面临着负载过量的情况,但节点仍有不断的新任务请求,将造成系统中所有的工作节点超负荷的状态,进而导致作业响应时间的降低。
在每个工作节点上运行的任务都会相互竞争资源,最终使得任务获得的系统资源,不能快速的完成任务。
此时,将不能快速完成的任务标记为掉队者,随着掉队者数量的增加,需要执行的后备任务也不断增多,进一步加剧了系统的负载,形成一个恶性循环,严重影响Hadoop系统的性能。
面对Hadoop推测执行机制的缺点,冇人提出了使用自适应负载调度调算法(SALS)进行改进[7],该算法定义了用于存放任务信息的TaskQueue队列和用于存放节点信息的Queue队列。
3.3、Hadoop推测执行算法和SALS算法性能分析
3.3.1、Hadoop推测执行算法性能分析
在同构环境中使用Hadoop推测执行算法可以很大的提高Hadoop处理数据的效率[8],在该环境卜.默认满足的条件如下所示:
①每个节点都是按照同样的速度处理任务
②在整个运行中,每个任务按相同的速率运行
③运行后界任务+会产生时问和资源的消耗
④Map阶段任务执行的进度使用已完成的数据/输入数据来表示,Reduce阶段中,括复制、序和归并三个阶段,设置每个阶段均占整个任务完成时问的1/3用于表示任务进度
⑤每个作业都是以批为中.位完成,所以如染出现的进度分数较小任务时,就判定该任务为掠队者
但是在异构环境中,上述条件是不成立的,故Hadoop推测执行算法不适合应用到异构环境中。
如见在异构环境启动该推测执行机制,则会造成以下后果:
①有些结点速度慢的原因可能由错误导致的,也可能是由其他原因导致的,如虚拟化环境、硬件版本不兼容。
故任务的执行速度差好较大。
②出现竞争资源和消耗时问的情况。
在一台计算机上运行多个虚拟机的虚拟坏境中,Hadoop调度机制中使用一个固定的阀值来判断掉队者,这会导致在同一时刻出现大展的掉队者,与正常的任务抢资源,造成资源的短缺,增加作业完成的时间,降低Hadoop的性能。
③在异构的环境中节点可能存在差异,执行的任务可能不是同一批次的。
因为在整个执行过程中,可能会出现,旧批次中的某个任务比新批次小的某个任务进度分数高,但是旧任务运行的速度比新任务运行的逨度要慢,在Hadoop推测执行调度备份任务时可能会先调度新任务,造成有些掉队者仟务一直无法执行。
所以,Hadoop的推测执行仅在同构环境下可以发挥其优势[9]。
如果在异构环境中满足这些假设条件,将得不到的真正的掉队者,同时频繁的推测执行后茶任务会占据大量的系统资源,严重降低Hadoop执行作业的性能。
3.3.2、SALS算法性能分析
为了解决Hadoop推测执行算法能在异构环境中应用的问题,有人提出使用自适应负载调节算法(SALS)的方法来改进Hadoop推测机制,相比于Hadoop推测机制的在异构环境中的无效性,SALS在一定程度上提高了异构环境中Hadoop的性能。
但是经过对该算法的分析,发现该算法存在以下问题:
①将所有任务都放到TaskQueue队列中;造成资源的浪费当收到节点请求任务的信息后,SALS算法将计算所有任务的剩余执行时间,并将所有任务进行排序,放到TaskQueue队列中。
当Task数据量非常大的时候,TaskQueue队列中的数据量将很大,不仅浪费存储空间,也会增加读取操作的复杂性。
②忽略Reduce任务;最初MapReduce框架将map任务和reduce任务均设定为等效,使用该算法忽略了任务中的另一类任务即(Reduce任务),将会造成系统负载不准确。
在配置Hadoop环境时,会启动适量的Map和Reduce。
为了使Map的输出得到及时的处理,Reduce的数量会随着Map数量的增加而增加。
所以,考虑到系统负载平衡时,Reduce任务也是不能被忽略的。
③仅采用Map处理的数据量作为衡量系统负载的标准;计算某一时刻的系统负载量时,需要计算所有Map处理数据量的大小。
由于计算的是每个小任务的数据量之和,计算量较大,将会造成CPU资源的浪费,以及延迟计算的时间。
经过研究发现可以使用执行任务的数量来代替执行的数据量作为系统的负载,这样可以减小系统计算量,节省CPU资源。
4、二路连接优化方法
4.1、ReduceSideJoin算法实现
针对基于MapReduce框架的通用二路连接算法RSJ的不足,有人提出了一种基于DistributedCache的改进优化算法。
优化算法的思想是在进行RSJ算法进行表关联之前,将其中一个表的连接属性的值提
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 Hadoop 研究 性能 分析
![提示](https://static.bdocx.com/images/bang_tan.gif)