技术开发 频道

分布式并行计算平台Dryad入门

    【IT168 技术】MapReduce 是由Google公司开发的一个针对大规模群组中的海量数据处理的分布式编程模型,在处理T级别以上巨量数据的业务上有着明显的优势。与Google的MapReduce相似,2010年12月21日微软推出了dryad的公测版,Dryad也通过分布式计算机网络计算海量数据,成为谷歌MapReduce分布式数据计算平台的竞争对手。与 MapReduce不同的是,Dryad是针对运行Windows HPC Server的计算机集群设计的,而且DryadLINQ使用.NET的LINQ查询语言模型。Dryad使.Net程序员可以利用数据中心的服务器集群对数据进行并行处理,这样使得程序员在操作数千台机器时,无需关心并行处理的细节。本文将从Dryad与云计算、Dryad的架构、DryadLINQ、Dryad同MapReduce的比较、Dryad的应用及前景这五个方面来进行介绍。

  Dryad与云计算

  云计算是网格计算(Grid Computing)、分布式计算(Distributed Computing)、并行计算(Parallel Computing)、效用计算(Utility Computing)、网络存储(Network Storage Technologies)、虚拟化(Virtualization)、负载均衡(Load Balance)等计算机技术和网络技术相融合的产物。典型的云计算技术特征可分为虚拟化技术、分布式技术、并行计算/分布式计算、XaaS、WEB X.0、数据存储、网络技术等等。

  分布式计算(Distributed Computing)是一门计算机科学,它研究如何把一个需要非常巨大的计算能力才能解决的问题分成许多小的部分,然后把这些部分分配给许多计算机进行处理,最后把这些计算结果综合起来得到最终的结果。

  并行计算(Parallel computing,或称并行处理、平行计算)一般是指许多指令得以同时进行的计算模式。

  高性能计算是云计算的特征之一,分布式并行计算是实现高性能计算的关键技术。2004年,谷歌发布了两篇关于MapReduce和分布式文件系统GFS的研究报告,这两篇报告成为Hadoop的基础。Apache 将Hadoop变为开源项目,雅虎也对Hadoop进行了单独开发。现在,Hadoop是雅虎的在线基础设施的重要支撑,并且已经被Facebook、 Twitter、苹果和微软等科技巨头采用。2008年,微软收购了语义搜索企业Powerset,并将Powerset公司基于Hadoop的相关技术用于必应(Bing)搜索引擎。

  Dryad被设计为伸缩于各种规模的计算平台:从单台多核计算机、到由几台计算机组成的小型集群,直至拥有数千台计算机的数据中心。Dryad执行引擎负责处理大型分布式、并行应用程序中会出现的各种难题:对计算机和它们的CPU进行调度,从通信或计算机的失败中恢复,以及数据在节点之间的传递等等。

  Dryad的架构

  一个Dryad程序员通过使用单向通道来连接并行程序。Dryad系统的总体的构建用来支持有向无环图(Directed Acycline Graph,DAG)类型数据流的并行程序。一个Dryad 任务被表示为一个有向无环图,当发生重要的计算事件时,这些图甚至在执行期间也能发生变化。Dryad Job结构如下图1所示:

  


▲ Dryad Job结构

  Dryad构建在Cluster Service和分布式文件系统之上,它的工作原理是这样的:当用户使用Dryad平台时,任务管理器(Job Manager,JM)获取图之后,便会在程序的输入通道准备完毕,并且有可用机器的时候对它进行调度。JM从命名服务器(Name Server,NS)那里获得一个可用的机器,并通过一个维护进程(daemon,D)来调度这个程序。文件,共享内存,或TCP管道都可以作为程序(节点)之间通信用的通道。在运行过程中可以动态改变图的形状,并得到很好的容错性。在调试的时候,整个图也可以运行在单个系统上。

  最底层使用了群集系统的windows server,这些server提供了群集服务(Cluster service)。在Cluster Service的基础上可以构建分布式文件系统(Cosmos),同时也支持CIFS和NTFS的文件系统,这使得数据的访问对上面的应用程序是半透明的。Dryad可以处理任务的创建和管理、资源管理、任务监控和可视化、容错、重新执行和调度等工作。有关Dryad系统架构的内容也可以参考IT168专题文章:http://tech.it168.com/a2011/0318/1167/000001167839.shtml

0
相关文章