论文摘要
分布式计算框架是一种降低并行程序开发复杂度的有效方法。一般来说,它提供一个分布式运行环境,封装了大部分分布式操作的逻辑,并要求开发者基于受限的编程接口开发并行程序。从本质上看,分布式计算框架通过软件重用,降低了开发的难度和成本。尽管如此,在现有的这些框架中,重用仅限于代码、程序库级别,而不能应用于更为高层的组件级别。基于组件的重用作为一种粗粒度的软件重用,能够很好地应对复杂的应用场景,也有助于灵活的程序开发,更是诸如软件产品线工程等高级开发方法的基础。要实现分布式计算框架上的组件级重用,框架需要从平台级别提供对组件管理、组件交互的支持。然而现有的框架都缺少对这一方面的关注,这既限制了它们在并行程序开发方面的表达能力,也可能导致开发效率的降低。本文设计的Pydra是一个新型的分布式计算框架。它采用面向任务的设计,将用户编写的任务作为组件进行管理,并从平台级别允许任务以一种灵活的方式相互动态调用,从而实现了并行程序开发中组件级别的软件重用。在运行时刻,Pydra负责协调组件之间的交互,隔离组件的运行上下文,并通过沙箱机制阻止恶意代码运行,确保系统的安全性。通过其自带的多种任务类型,Pydra也实现了对传统分布式计算框架中若干种编程模型的支持,如数据并行模型和MapReduce模型,拥有极大的开发灵活性。Pydra运行-在以高速以太网互联的计算机之上,采用传统的主从模型:用户向主节点提交自己的任务代码;主节点将代码同步到从节点上,并以一种对多用户公平的方式调度任务在从节点上的运行。实验表明,Pydra具有良好的伸缩性,其计算性能随着工作节点的增加而提升。在开发实验程序的过程中,实践证明Pydra的确能够提高程序开发的重用性,减少开发成本,从而提高并行程序开发的效率。