论文部分内容阅读
数据计算是指采用商业集群进行分布式计算解决大规模数据的存储、分析等问题的一类计算模式。随着互联网的发展,数据规模的增长,工业界和学术界对数据计算进行了广泛而深入的研究,提出了多种计算模式(如批处理、迭代处理、流处理等)、丰富的计算框架(如Hadoop、Spark、Storm等)、完整的生态系统。高性能计算是指利用聚集起来的强大计算能力处理一般服务器无法完成的数据密集型计算任务的一类计算模式。高性能计算经过几十年的发展,方兴未艾,并积累了深刻的计算理论和丰富的系统软件。研究表明,当前数据计算系统在执行能效上与高性能计算相比还有4-5个数量级的差距。这主要因为当前的数据计算技术在利用计算资源方面存在诸多开销。这其中,通信操作是主要的开销来源之一。相关工作表明,部分应用的数据通信时间可以占到总运行时间的50%以上。而当前的数据计算通信技术还不能有效的解决通信开销大、系统运行效率低的问题。 本文认为造成这样的问题在于现有的数据计算通信技术与其通信需求不匹配,缺乏对数据计算通信操作的分析和刻画、缺少一套面向数据计算通信的操作规范和通信库实现、缺少对数据计算通信技术的度量和评价工具。 针对上述问题,本文的主要工作是通过优化数据计算通信操作,提高数据计算系统的执行效率。本文的创新贡献如下: (1)本文提出了键值对通信的执行模型DPTA和抽象定义模型KVC。数据计算的通信特征包括,通信数据采用键值对的数据结构,通信方式是集合通信,通信数据量不受内存大小限制,通信过程蕴含计算操作。当前的通信技术不能满足同时具有这四个特征的数据计算通信需求。因此,本文提出了针对数据计算的通信执行模型DPTA,将通信操作分为数据层、分区层、转移层和聚合层四个层次,刻画了采用集合通信方式、计算与通信并发的数据计算通信过程。进一步,本文提出了面向键值对数据结构的通信操作,键值对通信KVC,反映了通信的数据结构特征和通信操作与内存大小无关的特征。 (2)本文通过扩展MPI通信原语设计了面向键值对数据的通信规范KV-MPI,并设计实现基于KV-MPI的键值对通信库DataMPI。KV-MPI通信规范依据键值对通信操作定义了4组控制操作,10个通信原语和若干配置参数,实现了通信操作的简洁性和易用性。DataMPI采用了异步通信方式减少计算和通信的同步开销,采用计算和通信并发执行提高系统执行效率,采用内存数据缓存减少不必要的IO操作。本文还介绍了DataMPI的多模式特性,并具体阐述了DataMPI支持MapReduce计算和迭代计算两种通信模式的设计思路。 (3)本文提出了键值对通信技术的基准测试程序KVCBench。KVCBench提供了面向通信操作的基础测试程序和基于应用实例的端到端测试程序。在端到端测试方面,KVCBench设计了微基准测试和应用计算两类测试负载,并集成了包括键值对通信库在内的4个的数据计算框架,可以实现对键值对通信操作的横向比较。 测试结果显示DataMPI具有良好的可扩展性。通过运行TeraSort和WordCount微基准测试程序,本文发现DataMPI相比于Hadoop能够分别有30%和40%以上的性能加速比。运行PageRank和K-means迭代测试程序,本文发现DataMPI相比于Hadoop能够分别有93%和67%以上的性能加速比。 DataMPI和KVCBench都已开源,DataMPI的工程链接为https://github.com/mpi-d/DataMPI;KVCBench的工程链接为https://github.com/leonf88/KVCBench。