13.3.2 Microsoft Dryad
Microsoft Dryad是微软研究院创建的研究项目,主要用来提供一个分布式并行计算平台。在Dryad平台上,每个Dryad工作流被表示为一个有向无环图。图中的每个节点表示一个要执行的程序,节点之间的边表示数据通道中数据的传输方式,其可能是文件、管道、共享内存、网络RPC等。Dryard工作流如图13-3所示。
图 13-3 Dryad工作流
每个节点(vertices)上都有一个处理程序在运行,并且通过数据通道(channels)的方式在它们之间传输数据。类似于Map和Reduce函数,工作流中的grep、sed、map、reduce、merge等函数可以被很多节点执行,每个节点会被分配一部分输入。Dryad的主控进程(Job Manager)负责将整个工作分割成多个任务,并分发给多个节点执行。每个节点执行完任务后通知主控进程,接着,主控进程会通知后续节点获取前一个节点的输出结果。等到后续节点的输入数据全部准备好后,才可以继续执行后续任务。
Dryad与MapReduce具有的共同特性就是,只有任务完成之后才会将输出传递给接收任务。如果某个任务失败,其结果将不会传递给它在工作流中的任何后续任务。因此,主控进程可以在其他计算节点上重启该任务,同时不用担心会将结果重复传递给以前传过的任务。
相比多个MapReduce作业串联模型,Dryad模型的优势在于不需要将每个MapReduce作业输出的临时结果存放在分布式文件系统中。如果先存储前一个MapReduce作业的结果,然后再启动新的MapReduce作业,那么,这种开销很难避免。