基于微软dryad分布式并行计算平台云技术的研究

基于微软dryad分布式并行计算平台云技术的研究

ID:11438906

大小:44.19 KB

页数:10页

时间:2018-07-12

基于微软dryad分布式并行计算平台云技术的研究_第1页
基于微软dryad分布式并行计算平台云技术的研究_第2页
基于微软dryad分布式并行计算平台云技术的研究_第3页
基于微软dryad分布式并行计算平台云技术的研究_第4页
基于微软dryad分布式并行计算平台云技术的研究_第5页
资源描述:

《基于微软dryad分布式并行计算平台云技术的研究》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、基于微软Dryad分布式并行计算平台云技术的研究微软于2010年12月21日发布了分布式并行计算基础平台--Dryad测试版,成为谷歌MapReduce分布式数据计算平台的竞争对手。它可以使开发人员能够在Windows或者.Net平台上编写大规模的并行应用程序模型,并能够在单机上所编写的程序很轻易的运行在分布式并行计算平台上,程序员可以利用数据中心的服务器集群对数据进行并行处理,当程序开发人员在操作数千台机器时,而无需关心分布式并行处理系统方面的细节。本文将重点讲述微软最新Dryad平台方面的功能原理以及应用。Dryad平台也是构建微软云计算基础设施重要核心技术

2、之一。要使云计算真正的"落地"主要面临两个重要问题:如何构建与应用程序来紧密结合的大规模底层基础设施?目前构建分布式平台的基础设施主要包括Dryad、Dynamo和MapReduce等框架。图1数据并行计算另一个问题就是如何通过构建新型的云计算应用程序,能够在网络上提供更加丰富的用户体验?Yahoo扩展了MapReduce并提出了MapReduceMerge框架,并可以应用到多核处理器上。HP则将注意力关注于分布式共享内存的使用上,而不同于MapReduce编程方面。IBM主要使用Linux系统映像以及Hadoop软件(GoogleFileSystem以及Map

3、Reduce的开源实现)。微软则自主研发了Dryad和DryadLINQ,并可以用于辅助C#开发人员在计算机集群或数据中心里分布式并行处理大规模的数据,从而在程序执行性能与效率上提高数倍。Dryad概述Dryad和DryadLINQ是微软硅谷研究院创建的研究项目,主要用来提供一个分布式并行计算平台,DryadLINQ提供一种高级语言接口,使普通程序员可以轻易进行大规模的分布式计算,它结合了微软Dryad和LINQ两种关键技术,被用于在该平台上构建应用。Dryad与微软体系结构中的位置关系,如图2所示。图2Dryad与微软体系结构的关系Dryad同MapReduc

4、e一样,它不仅仅是一种编程模型,同时也是一种高效的任务调度模型。Dryad这种编程模型并不仅适用于云计算,在多核和多处理器以及异构机群上同样有良好的性能。我们知道在VisualStudio2010C++有一套并行计算编程框架,支持常用的协同任务调度和硬件资源(例如CPU和内存等)管理,通过Workstealing算法可以充分利用细颗粒度并行的优势,来保证空闲的线程依照一定的策略建模,从所有线程队列中"偷取"任务执行,所以能够让任务和数据粒度并行。如果一个耗时的任务只被粗略分割成四个子任务并发执行,即使是在四核心CPU的计算机上运行也无法做到实时动态的负载均衡,可

5、能发生三个子任务很早就完成了,而另一个任务还在一个核上是等待状态。Dryad与上述并行框架相似,同样可以对计算机和它们的CPU进行调度,不同的是Dryad被设计为伸缩于各种规模的集群计算平台,无论是单台多核计算机还是到由多台计算机组成的集群,甚至拥有数千台计算机的数据中心,可以从任务队列中创建的策略建模来实现分布式并行计算的编程框架。Dryad系统架构(Dryadarchitecture)Dryad系统的总体的构建用来支持有向无环图(DirectedAcyclineGraph,DAG)类型数据流的并行程序。Dryad的整体框架根据程序的要求完成调度工作,自动完成

6、任务在各个节点上的运行。在Dryad平台上,每个Dryad工作或并行计算过程被表示为一个有向无环图。图中的每个节点表示一个要执行的程序,节点之间的边表示数据通道中数据的传输方式,其可能是文件、TCPPipe、共享内存等,为了支持数据类型需要针对每个类型有序列化代码。图3Dryad系统结构如图3所示,当用户使用Dryad平台时,首先是需要在任务管理(JM)节点上建立自己的任务。每一个任务由一些处理过程以及在这些处理过程数据传递组成。任务管理器(JM)获取无环图之后,便会在程序的输入通道准备,当有可用机器的时候便对它进行调度。JM从命名服务器(NS)那里获得一个可用

7、的计算机列表,并通过一个维护进程(PD)来调度这个程序。系统组件:任务管理器(JobManager,JM):每个Job的执行被一个JobManager控制,该组件负责实例化这个Job的工作图;在计算机群上调度节点的执行;监控各个节点的执行情况并收集一些信息;通过重新执行来提供容错;根据用户配置的策略动态地调整工作图;计算机群(Cluster):用于执行工作图中的节点;命名服务器(NameServer,NS):负责维护Cluster中各个机器的信息;维护进程(PDaemon,PD):进程监管与调度工作。从总体来看,传统的Linux/Unix管道是一维管道,每个节点

8、在管道中是单个的程序。而

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。