论文部分内容阅读
许多针对大数据集的建模过程中都需要使用迭代算法,比如数据挖掘,网页排序,和社交网络的分析等等。类似这样的迭代应用一般都需要进行海量数据处理。MapReduce作为进行海量数据处理的分布式计算框架之一,因其简单的编程方式,高容错性,易于实现且扩展性强,受到了业界广泛的关注。但是在MapReduce机制下处理迭代应用还存在下几方面的性能缺陷,(1)每次迭代生成具备较多的数据量的新的模型而造成大规模的网络阻塞,(2)计算过程中静态数据重复读取,(3)存在多方面的控制依赖和数据依赖,(4)在一些需要进行阈值检测的迭代应用中MapReducde需要额外的任务来进行阈值检测,(5)在使用传统MapReduce编程接口的情况下,迭代计算不易被表达。针对以上问题,本文将从传统MapReduce机制的运行策略,调度机制和编程模型入手,结合迭代应用的特点,提出了一种针对迭代型数据处理的性能优化机制,从多个角度对传统MapReduce进行改进,来更有效的支持MapReduce机制下的迭代计算,本文的主要研究内容包括以下几个方面:1、通过对当前几种处理大规模数据集系统框架的比较分析,给出了选择MapReduce作为迭代应用的实现平台原因,以典型迭代应用的为例,分析了MapReduce处理迭代计算时的数据流和控制流,找出了相关的性能问题。2、为了减少全局线性运行策略所造成的执行延迟,缓解多对多的数据传输对网络带宽所造成的压力,我们给出了局部线性运行策略,并设计了专门针对缓存的循环调度算法,使得缓存机制能够在迭代应用中最大程度的发挥作用,最后针对线性执行方式提出了相应并行迭代策略,更加有效的提升迭代计算整体的计算速度和执行效率。3、最后我们以本文所提出的机制为平台,选择了典型的迭代算法进行实现,并以相应算法在Hadoop平台上的运行为基准,通过实验验证了本文中所提出的优化机制在减少中间数据量,缓解网络压力,提升迭代计算速度等方面有一定的效果。