- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
基于匹配规则MapReduce任务调度模型
基于匹配规则MapReduce任务调度模型
摘 要:基于开源云计算平台Hadoop的MapReduce是当前流行的分布式计算框架之一,然而其先进先出(FIFO)调度算法存在资源利用效率低下的问题。提出了一种基于资源匹配规则的MapReduce任务调度模型并进行了算法实现。该调度模型通过获取任务的资源需求与计算节点的剩余资源,依据资源的匹配性进行任务分配,提高了系统的资源使用效率。首先对MapReduce的调度过程进行建模,提出了资源及匹配度的量化定义和相应的计算公式;然后给出了资源测量的具体方法及算法实现;最后利用TeraSort、GrepCount和WordCount任务与FIFO调度算法进行实验对比,实验结果显示,最好的情况下,提出的调度模型任务完成时间减少了22.19%,而最差情况下的吞吐量也提高了25.39%。
关键词:云计算;调度算法;Hadoop;MapReduce;先进先出
0 引言
目前一个普遍被接受的云计算的定义是由Vaquero等[1]提出的:云计算是一种大规模的易用的可访问的虚拟资源(如硬件、平台和/或服务)池。从云计算的定义可以看出,云是网络发展和信息技术(Information Technology,IT)计算发展的必然结果。如:Google公司为解决自身大规模数据集处理问题而提出的GFS(Google File System)[2]、MapReduce[3]计算框架以及为保证这两项技术顺利运行而提出的其他相关技术[4]。云计算代表了未来IT技术发展的方向。
2004年,Apache Nutch项目负责人Doug Cutting按照Google公司公布的文献实现了开源的MapReduce框架并命名为Hadoop,大大方便了云计算的学术研究。但是,在实际使用中,MapReduce调度算法存在效率低下的问题[5]。当前,Hadoop使用先进先出(FirstIn FirstOut,FIFO)算法进行调度。该算法调度中只考虑任务的到达的顺序,因此不能综合考虑任务的需求和节点剩余的资源。
本文提出了一种基于匹配规则的MapReduce任务调度(MA)模型,其基本思想是对任务的资源需求进行量化,同时考察计算节点剩余的资源,通过本文提出的匹配规则计算任务与资源节点匹配度,然后将任务调度到最匹配的计算节点,从而达到资源的最佳利用率,提高算法的调度效率。通过利用TeraSort、GrepCount和WordCount与Hadoop的FIFO调度算法相比较,结果显示本文提出的算法在任务完成时间上减少了22.19%,吞吐量上增加了25.39%。
1 MapReduce调度模型及相关工作
MapReduce是一种非常容易实现的分布式计算框架,图1显示了MapReduce任务调度的运行过程。在MapReduce运行过程中,用户程序需要被主节点调度到相应的从节点以满足分布式计算的需要。
当前,Hadoop平台中MapReduce的任务调度采用的是FIFO的调度算法,其基本思想是:将计算节点的计算能力划分,一份计算能力可以计算一个任务,这一份计算能力称为slot。当一个计算节点有空余的slot时,便向主节点请求一个计算任务。当主节点中有计算的任务时,则将相应的任务的按照到达的先后顺序进行调度和计算。这样的调度算法存在两个方面的问题:一方面无法优先照顾较短的计算任务,吞吐量较低;另一方面未考虑当前计算节点的实际运行情况,资源的利用效率不高。
针对Hadoop的FIFO算法无法及时响应交互式程序的问题,Yahoo公司提出了计算能力调度算法(Capacity Scheduler)[6],该算法的基本思想是将任务分为多个队列,每个队列分配一定的资源,队列中的每个任务按照FIFO算法来调度,这样,就可以在一定程度上,让所有的用户的任务都能被执行。具有类似思想的还有Facebook公司提出的公平调度算法(Fair Scheduler)[7],所不同的是公平调度算法默认情况下,会对每个用户分配一个资源池,这样公平地保证每个用户的任务都能被执行,而不考虑该用户提交任务的多少。
为了计算式(4),需要知道各个计算节点剩余的资源及任务的资源需求。对于计算节点资源的剩余情况,在具体实现上,本文在Slave与Master节点间通信的Heartbeat数据结构中增加了三个变量,同时在Slave端通过读取/proc下的文件来获取当前计算节点的资源剩余情况。对于任务的资源需求,如算法1所示,当请求任务的计算节点并没有任务在运行,且当前存在资源需求未知的任务时,则将该任务调度到该计算节点;当该任务在该计算节点运行时,则通过Linux自带的time指令来记录和获取该任务的资源需求。
3 实验
原创力文档


文档评论(0)