我要投搞

标签云

收藏小站

爱尚经典语录、名言、句子、散文、日志、唯美图片

当前位置:白小姐 > 分布式系统 >

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

归档日期:06-11       文本归类:分布式系统      文章编辑:爱尚语录

  MapReduce是Google公司设计的分布式计算模型,作为Google公司的核心技术,MapReduce在处理T级别以上巨量数据的业务上有着明显的优势。Google公司MapReduce实现是该公司的保密技术,而来自开源社区Apache的Hadoop项目则是此思想的java克隆版本。微软则通过Dryad平台进行分布式系统应用搭建。上一篇文章中,我们浅析了云计算分布式并行计算的编程模型,由于MapReduce是目前比较流行流行的分布式系统平台,所以本文将重点讲述微软云计算Dryad和Google的MapReduce分布式系统结构。

  Dryad系统的总体的构建用来支持有向无环图(Directed Acycline Graph,DAG)类型数据流的并行程序。Dryad的整体框架根据程序的要求完成调度工作,自动完成任务在各个节点上的运行。在Dryad平台上,每个Dryad工作或并行计算过程被表示为一个有向无环图。图中的每个节点表示一个要执行的程序,节点之间的边表示数据通道中数据的传输方式,其可能是文件、TCP Pipe、共享内存等,为了支持数据类型需要针对每个类型有序列化代码。

  如图1所示,当用户使用Dryad平台时,首先是需要在任务管理(JM)节点上建立自己的任务。每一个任务由一些处理过程以及在这些处理过程数据传递组成。任务管理器(JM)获取无环图之后,便会在程序的输入通道准备,当有可用机器的时候便对它进行调度。JM从命名服务器(NS)那里获得一个可用的计算机列表,并通过一个维护进程(PD)来调度这个程序。

  任务管理器(Job Manager,JM):每个Job的执行被一个Job Manager控制,该组件负责实例化这个Job的工作图;在计算机群上调度节点的执行;监控各个节点的执行情况并收集一些信息;通过重新执行来提供容错;根据用户配置的策略动态地调整工作图;

  从总体来看,传统的Linux/Unix管道是一维管道,每个节点在管道中是单个的程序。而Dryad的执行过程就可以看做是一个二维的管道流的处理过程。其中,每个节点可以具有多个程序的执行,通过这种算法可以同时处理大规模数据。

  如图2所示,我们可以看到,在每个节点进程(Vertices Processes)上都有一个处理程序在运行,并且通过数据管道(Channels)的方式在它们之间传送数据。二维的Dryad管道模型定义了一系列的操作,可以用来动态的建立并且改变这个有向无环图。这些操作包括建立新的节点,在节点之间加入边,合并两个图以及对任务的输入和输出进行处理等。

  与微软Dryad相似,MapReduce编程模型可用于大规模数据集(大于1TB)的并行运算。概念“Map(映射)”和“Reduce(化简)”,它们的主要思想都是从函数式编程语言里借来的,还有从矢量编程语言里借来的特性。MapReduce映射处理结构,如图3所示。

  从上图可以看出,MapReduce极大地方便了编程人员在不会分布式并行编程的情况下,将自己的程序运行在分布式系统上。当前的软件实现是指定一个Map(映射)函数,用来把一组键值对映射成一组新的键值对,指定并发的Reduce(化简)函数,用来保证所有映射的键值对中的每一个共享相同的键组。微软Dryad与谷歌的MapReduc映射原理相似,但不同的是通过DryadLINQ来实现分布式程序编程设计。

本文链接:http://frankstella.net/fenbushixitong/431.html