加入收藏 | 设为首页 | 会员中心 | 我要投稿 东莞站长网 (https://www.0769zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 云计算 > 正文

详解云计算分布式并行计算:编程模型

发布时间:2021-07-04 11:14:19 所属栏目:云计算 来源:互联网
导读:MapReduce 是由Google公司开发的一个针对大规模群组中的海量数据处理的分布式编程模型。它实现了两个功能:Map把一个函数应用于集合中的所有成员,然后返回 一个基于这个处理的结果集。而Reduce是把从两个或更多个Map中,通过多个线程,进程或者独立系统并行
  MapReduce 是由Google公司开发的一个针对大规模群组中的海量数据处理的分布式编程模型。它实现了两个功能:Map把一个函数应用于集合中的所有成员,然后返回 一个基于这个处理的结果集。而Reduce是把从两个或更多个Map中,通过多个线程,进程或者独立系统并行执行处理的结果集进行分类和归纳。Map() 和 Reduce() 两个函数可能会并行运行,即使不是在同一的系统的同一时刻。
 
  微软于2010年12月21日发布了分布式并行计 算基础平台Dryad测试版,成为谷歌MapReduce分布式数据计算平台的竞争对手。它可以使开发人员能够在Windows或者.Net平台上编写大 规模的并行应用程序模型,并能够在单机上所编写的程序很轻易的运行在分布式并行计算平台上,程序员可以利用数据中心的服务器集群对数据进行并行处理,当程 序开发人员在操作数千台机器时,而无需关心分布式并行处理系统方面的细节。本文将重点讲述微软最新Dryad平台方面的功能原理以及应用。
 
  Dryad平台也是构建微软云计算基础设施重要核心技术之一。要使云计算真正的“落地”主要面临两个重要问题:如何构建与应用程序来紧密结合的大规模底层基础设施?目前构建分布式平台的基础设施主要包括Dryad、Dynamo和MapReduce等框架。
 
      
图1 数据并行计算
   另一个问题就是如何通过构建新型的云计算应用程序,能够在网络上提供更加丰富的用户体验?Yahoo扩展了MapReduce并提出了 MapReduceMerge框架,并可以应用到多核处理器上。HP则将注意力关注于分布式共享内存的使用上,而不同于MapReduce编程方面。 IBM主要使用Linux系统映像以及Hadoop软件(Google File System以及MapReduce的开源实现)。微软则自主研发了Dryad和DryadLINQ,并可以用于辅助C#开发人员在计算机集群或数据中心 里分布式并行处理大规模的数据,从而在程序执行性能与效率上提高数倍。
 
  Dryad和DryadLINQ是微软硅谷研究院创建的研究项 目,主要用来提供一个分布式并行计算平台,DryadLINQ提供一种高级语言接口,使普通程序员可以轻易进行大规模的分布式计算,它结合了微软 Dryad和LINQ两种关键技术,被用于在该平台上构建应用。Dryad与微软体系结构中的位置关系,如图2所示。
 
      
图2 Dryad与微软体系结构的关系
  Dryad同MapReduce一样,它不仅仅是一种编程模型,同时也是一种高效的任务调度模型。Dryad这种编程模型并不仅适用于云计算,在多核和多处理器以及异构机群上同样有良好的性能。
 
   我们知道在Visual Studio 2010 C++有一套并行计算编程框架,支持常用的协同任务调度和硬件资源(例如CPU和内存等)管理,通过Work stealing算法可以充分利用细颗粒度并行的优势,来保证空闲的线程依照一定的策略建模,从所有线程队列中“偷取”任务执行,所以能够让任务和数据粒 度并行。如果一个耗时的任务只被粗略分割成四个子任务并发执行,即使是在四核心CPU的计算机上运行也无法做到实时动态的负载均衡,可能发生三个子任务很 早就完成了,而另一个任务还在一个核上是等待状态。
 
  Dryad与上述并行框架相似,同样可以对计算机和它们的CPU进行调度,不同的是 Dryad被设计为伸缩于各种规模的集群计算平台,无论是单台多核计算机还是到由多台计算机组成的集群,甚至拥有数千台计算机的数据中心,可以从任务队列 中创建的策略建模来实现分布式并行计算的编程框架。

(编辑:东莞站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!