论文部分内容阅读
随着异构数据的急剧增加,云计算应运而生。作为云计算的编程模型MapReduce同样也得到了广泛的关注,特别是在学术界。为了解决覆盖及中间数据的存储等诸多问题,诸多学者提出了许多地改进办法并形成了自己的编程模型,如有Hadoop、Twister和Haloop等。为了能够实现迭代算法,Haloop模型中增加了Loop Control机制,该机制在具体的实施时主要是增加了两个函数,即ADDMap和ADDReduce,这两个函数的目的就在于来增加其迭代的次数。同时在Twister模型中也有相应控制loop的机制。同样,在本文中为了更好的执行具有迭代的算法,不但保持了原有的接口和函数,而且还在Map函数、Reduce函数、ADDMap函数和ADDReduce函数中增加了一个参数M,M的作用主要是来区分科学计算中的四类算法的。如果M等于1就代表是第一类算法;如果M等于2时就代表第二类算法;如果M等于3时就代表第三类算法;如果M等于4时就代表第四类算法。由于第三类和第四类算法都是具有迭代的算法,这时把该两类算法经常要用到的函数及接口都写成了适配器。在具体做实验时,开发人员就可以根据需要往函数体里面增加相应的函数体。为了确保数据的安全,在实验时变量被声明成保护型。把那些变化不大的数据放在缓冲池,这样一来就可在Slave节点的本地系统上读写数据,而不用从Master节点上读写数据,这样不但可以减轻Master节点的工作量,而且可以提高运行效率。基于种种调度算法的缺点,提出改进的算法。该算法增加如下参数:计算成本,任务的最后期限和客服端机器的处理速度等参数,还设置了两个队列:计算资源队列和最后期限队列。其中,计算资源队列中任务的优先级是由计算成本来决定。计算计算成本时要乘以一个权值Weight,该权值的大小是由在Map函数、Reduce函数、ADDMap函数和ADDReduce函数中增加的参数M来决定。如果M等于1时,Weight也等于1;如果M等于2时,Weight也等于2;如果M等于3时,Weight也等于3;如果M等于4时,Weight也等于4。最后期限队列的优先级是由最后期限(deadline)来决定。并设置计算资源队列的所有任务的优先级都高于最后期限队列中所有任务,如果最后期限队列存在有最后期限等于0的任务,则将该任务直接插到计算资源队列的队首的位置。这样一来,不仅确保了大任务的高效执行,同时也照顾了小任务的执行。改进的算法取得了很好的性能。在文章的最后举出相关的例子并利用Hadoop作了相应的实验。