论文部分内容阅读
由通用机器组成的大规模集群作为并行计算的有效途径之一,广泛应用于科学及工程中的计算模拟、海量数据处理等复杂问题中。并行编程模型是并行计算及开发并行软件的基础,是决定并行程序运行的关键因素之一。现有的编程模型针对特定的计算需求,难以有效地通用于不同的应用问题。因此设计一种具有通用性的并行编程模型成为当前研究的重要领域。
通过对多种并行编程模型的分析总结,本文提出一种改进的编程模型,适用于在大规模廉价集群上解决广泛的应用问题,特别是具有复杂逻辑关系的子任务。用户通过简单的接口描述各子任务的内容及子任务之间的逻辑关系。模型按照任务的逻辑关系和集群的实时运行情况调度执行任务,最大程度地利用集群的计算资源完成计算。错误处理和推测式执行机制使模型具有较高的可靠性。
本文基于Hadoop平台,设计实现了一个原型系统。采用模块化设计,使用Java语言开发。系统分为任务解析、调度和节点通信模块三部分,各模块之间功能划分清晰,具有良好的可移植性和扩展性。实验结果表明,系统可以稳定地运行在异构的廉价集群上,正确地解析任务的内容并在集群中调度执行。在部分子任务执行失败,或部分节点故障的情况下,可以保证系统正确地完成计算。与MapReduce模型相比,改进模型可以合理地描述任务并充分利用集群的计算资源,矩阵相乘和大数分解问题的运行时间分别缩短64.2%和20.3%,为复杂的应用问题提供了新的解决方案。