论文部分内容阅读
MapReduce编程模型是大数据时代海量数据处理的核心技术,在各行业各领域得到了广泛应用。MapReduce计算框架屏蔽了以往并行程序设计时的底层复杂操作,为开发者提供了一种硬件透明的开发环境,使开发者专注于云计算的具体应用,提高了开发效率。尽管MapReduce自身有着以上优势,但由于MapReduce计算框架屏蔽了集群结点的异构性,用户作业的输入数据存储在HDFS之上以及Map任务和Reduce任务并发执行时的同步和数据共享的开销较大,当前的MapReduce系统并不能完全满足大数据时代对计算性能的需求。MapRedue计算框架基于结点的计算能力和任务各阶段的比例相同及集群负载不变的策略调度任务,这使异构环境下的Map任务并发执行效率低下。对此提出了基于任务执行历史信息和数据局部性的任务预测调度算法,将任务分发到最好的结点上执行。Map任务需要数据时才向HDFS发请求,HDFS的流式访问特点使数据从存储位置加载到结点内存会产生较大的时间延迟。对此设计了Map任务的数据预取技术,将输入数据提前从HDFS中加载到运行结点的内存,使计算和数据传输同步进行,提高Map任务的执行效率。Map任务输出全部中间结果后Reduce任务才能开始执行,Reduce任务向Map任务所在结点拉取中间数据,这种方式增加了Reduce任务等待数据的时间和中间数据的传输开销。对此,提出了管道式传输技术,先对Map产生的中间数据进行聚合后缓存到本地,然后再通过管道传输到Reduce任务,提高了中间数据的传输效率。将提出的两种优化技术集成到MapReduce框架中,通过Benchmark的测试表明,Map任务的预测调度和预取技术降低了访问输入数据的开销,中间数据的管道式传输机制提高了Reduce任务访问数据的速度,最终的实验结果验证了本文所提方案的有效性。