微软发布学术版分布式计算技术Dryad和DryadLINQ
创始人
2024-04-18 20:11:09
0

Dryad和DryadLINQ是微软硅谷研究院创建的研究项目,旨在提供一个分布式计算平台,近年来这个平台已经在微软内部得以广泛使用(如微软AdCenter中的数据分析)。在近日举行的微软2009年研究院教员峰会上,微软发布了Dryad/DryadLINQ的学术版,以及Trident项目(一个基于Dryad/DryadLINQ及微软其他一些技术的科研工作流平台)的CTP版本。

Dryad是微软分布式并行计算基础平台,使程序员可以利用数据中心的服务器集群对数据进行并行处理。Dryad程序员在操作数千台机器时,无需关心并行处理的细节。据Dryad论文描述:

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

DryadLINQ的目标是提供一种高级语言接口,使普通程序员可以轻易进行大规模的分布式计算,它结合了微软Dryad和LINQ两种关键技术。

DryadLINQ执行流程

LINQ的理念为“代码即数据(treat code as data)”。如上图所示,DryadLINQ可以根据程序员给出的LINQ查询生成可以在Dryad引擎上执行的分布式运算规则,并负责任务的自动并行处理及数据传递时所需要的序列化等操作。此外,它还提供了一系列易于使用的高级特性,如强类型数据,Visual Studio集成调试,以及丰富的任务优化规则等等。以下是使用DryadLINQ获取一个柱状图所需数据的方式(引用自微软发布的示例代码):

  1. static IQueryable Histogram(IQueryable input, int k)  
  2. {  
  3.     IQueryable words = input.SelectMany(x => x.Split(' '));  
  4.     IQueryable> groups = words.GroupBy(x => x);  
  5.     IQueryable counts = groups.Select(x => new Pair(x.Key, x.Count()));  
  6.     IQueryable ordered = counts.OrderByDescending(x => x.count);  
  7.     IQueryable top = ordered.Take(k);  
  8.     return top;  

谈到大规模分布式计算技术,便不得不提起著名的Google MapReduce。据DryadLINQ论文(该论文获得OSDI 08最佳论文奖)所述,DryadLINQ与MapReduce的区别在于:

MapReduce同样提供了能够快速进行编程的简化抽象,但是,使用这种编程模型来实现一些最常见的操作,如数据库Join都要使用较为有技巧(tricky)的做法。还有,我们经常需要把MapReduce计算嵌入一种脚本语言来实现多次归并或排序操作。每个MapReduce阶段(stage)都是自治的(self-contained),因此无法跨越边界进行优化。此外,缺少类型系统来连接不同的MapReduce阶段,迫使程序员必须显式跟踪阶段间传递的对象,这导致软件长期维护以及组件的复用变得麻烦。

因此,出现了一些构建于MapReduce抽象上的DSL为程序员隐藏了一些复杂性,如Sawzall、Pig、以及其他一些未发表的系统,如Facebook的HIVE。这些DSL简单地结合了声明式与命令式的编程方式,并生成类似SQL存储过程的模型,这样便可以对跨越MapReduce阶段的边界进行一些整体的自动优化。然而,这些做法也带来了一些SQL的缺点,如过于简单的自定义类型系统,以及有限的交互式计算能力。它们提供的优化不如DryadLINQ来的有效,一部分原因在于Dryad比MapReduce执行平台的灵活性要高的多。

此外,微软发布的Trident项目是一个科学工作流控制台,为科学家们提供了一个灵活而强大的方式,可以对大规模的,变化纷繁的数据集进行分析。它提供了可视化工具来创建、管理和分享工作流,并且可以在Windows HPC Server 2008集群上执行这些工作流。Trident基于Dryad/DryadLINQ和WF开发,并提供了WPF和Siverlight两种版本的可视化界面。开发人员还可以扩展Trident,并与Word,SQL Server,Data Service等多种技术进行集成,使Trident的适用范围更为广泛。

 

【编辑推荐】

  1. 用RMI实现基于Java的分布式计算
  2. 分布式缓存系统memcached简介与实践
  3. .Net平台下的分布式缓存设计
  4. .NET方法演化史 从Delegate到Lambda再到LINQ
  5. 神兵利器 浅谈如何使用LINQ检索和操作数据库

相关内容

热门资讯

如何允许远程连接到MySQL数... [[277004]]【51CTO.com快译】默认情况下,MySQL服务器仅侦听来自localhos...
如何利用交换机和端口设置来管理... 在网络管理中,总是有些人让管理员头疼。下面我们就将介绍一下一个网管员利用交换机以及端口设置等来进行D...
施耐德电气数据中心整体解决方案... 近日,全球能效管理专家施耐德电气正式启动大型体验活动“能效中国行——2012卡车巡展”,作为该活动的...
20个非常棒的扁平设计免费资源 Apple设备的平面图标PSD免费平板UI 平板UI套件24平图标Freen平板UI套件PSD径向平...
德国电信门户网站可实时显示全球... 德国电信周三推出一个门户网站,直观地实时提供其安装在全球各地的传感器网络检测到的网络攻击状况。该网站...
为啥国人偏爱 Mybatis,... 关于 SQL 和 ORM 的争论,永远都不会终止,我也一直在思考这个问题。昨天又跟群里的小伙伴进行...
《非诚勿扰》红人闫凤娇被曝厕所... 【51CTO.com 综合消息360安全专家提醒说,“闫凤娇”、“非诚勿扰”已经被黑客盯上成为了“木...
2012年第四季度互联网状况报... [[71653]]  北京时间4月25日消息,据国外媒体报道,全球知名的云平台公司Akamai Te...