技术开发 频道

浅析云计算分布式并行计算:算法应用

    【IT168 专稿】众所周知MapReduce模型是Google公司在多台普通机器,利用函数式的思想,提高程序执行的性能,而Stanford的Phoenix则是这一模型在多核时代的解决方案。作为Google MapReduce技术的开源实现,Hadoop借鉴了谷歌的Google File System文件系统、MapReduce并行算法以及BigT able。因此,Hadoop也是一个能够分布式处理大规模海量数据的软件框架,也是一个开源的分布式并行计算平台,它主要由MapReduce的算法执行和一个分布式的文件系统等两部分组成。

  系列文章:

  浅析云计算分布式运算:编程模型

  浅析云计算分布式运算:系统架构  

  Hadoop是并行工作的,以加快任务处理速度。Hadoop的可扩展依赖于部署Hadoop软件框架计算集群的规模,Hadoop的运算是可扩展的,具有处理PB级数据的能力。虽然Hadoop自身由Java语言开发, 但它除了使用Java语言进行编程外, 同样支持多种编程语言,如C++。

  与Hadoop不同的是微软是通过DryadLINQ语言进行编程与设计,它可以根据程序员给出的LINQ查询生成可以在Dryad引擎上执行的分布式策略算法建模(运算规则),并负责任务的自动并行处理及数据传递时所需要的序列化等操作。此外,它还提供了一系列易于使用的高级特性,如强类型数据,Visual Studio集成调试,以及丰富的任务优化策略(规则)算法等等。这种模型策略开发框架也比较适合采用领域驱动开发设计(DDD)来构建“云”平台应用,并能够较容易的做到自动化分布式计算。

  并行算法分治策略

  Y=(A+B(C+DEF))+G,串行计算需要6步。利用结合律和交换律,该式变为Y=Y + (分裂为两个问题),其中Y =A+G, =B (C+DEF),在两台处理机的系统上只需5步并行计算。在用分配率,Y=(A+B(C+DEF))+G可变为Y= + ,其中 =A+G+BC, =BDEF,在两台处理机的系统上并行计算只需4步。如四台处理机的系统,并行计算可进一步减少为3步。两台处理机下的运算分解树和四台处理机下的运算分解树,如图1所示。


图1 DGA运算分解树

  从上面分析我们可以看到,通过并行算法策略建模,可以有效的控制数据的颗粒度,当程序运行在Dryad分布式并行平台时候,可最大化的提高分布式并行运算效率。

  分布式并行策略

  在云计算的时代,Dynamo(Amazon 公司的一个分布式存储引擎)可以说是一本实现分布式存储的红宝书,借鉴Dynamo实现的产品如雨后春笋般冒出。

  我们经常会遇到所开发的网站/系统,无法承载大规模用户并发访问的问题。解决该问题的传统方法是使用数据库,通过数据库所提供的访问操作接口来保证处理复杂的查询能力。当访问量增大,单数据库处理不过来时便增加数据库服务器。如果增加了3台服务器,再把用户分成了三类(关注:策略建模、颗粒度和映射):A(学生),B(老师),C(程序员)。每次访问的时候,Dryad会先查看用户属于哪一类,然后直接访问存储那类用户数据的数据库,可能处理能力增加了三倍。这时我们已经实现了一个分布式的存储引擎过程,而Dryad与Dynamo具有相似的功能。Dynamo分布式存储引擎,如图2所示。


▲图2 Dynamo分布式存储引擎

0
相关文章