论文部分内容阅读
MapReduce计算模型是一种流行的分布式计算模型。MapReduce计算模型从解决简单的文本处理问题发展到解决复杂的机器学习、数据挖掘和社交网络分析等问题,从处理批处理型作业发展到处理迭代型作业。但是大量的使用经验表明MapReduce计算模型不适合迭代型作业。由于任务的重复执行特性和动态数据的存在,迭代型作业中存在大量的数据传输。迭代算法广泛存在于机器学习、数据挖掘和社交网络分析等应用中,现有MapReduce计算模型无法有效支持这类应用,设计一种能够透明高效地支持迭代计算的MapReduce计算模型是亟待解决的问题。 针对现有Hadoop实现迭代算法存在网络传输负载大的问题,面向迭代计算的MapReduce优化方法从计算模型的数据流角度出发,从四个不同角度进行优化:通过一种动态数据的缓存策略,解决将动态数据存储于分布式文件系统中带来的额外网络传输开销和磁盘I/O开销;通过一种动态数据的预取策略,解决传统系统中以任务为单位请求和传输数据方式带来的极大的网络传输开销;通过一种面向迭代型作业的任务调度策略,解决任务调度器对集群网络负载的弱感知性,并支持作业历史执行信息的反馈优化;同时为了解决节点失败导致动态数据在存储和传输过程中丢失的问题,提出针对于动态数据的容错策略以减少重复计算。基于以上优化方法实现了原型系统Conch。 实验结果表明,Conch系统能够透明高效地支持迭代型作业。基于现有测试规模,动态数据传输规模降低了16倍。在单作业环境下相较于Hadoop系统和HaLoop系统,Conch系统中K-Means作业性能提升了17.7%和14.7%,fuzzy C-Means作业性能提升了15.9%和13.5%。在多作业环境下,Conch系统有更高的作业吞吐量,相较于Hadoop系统和HaLoop系统分别最高提升了63.6%和28.6%。