从图4可以看出,执行一个Map-Reduce程序需要五个步骤:输入文件、将文件分配给多个worker并行地执行、写中间文件(本地写)、多个Reduce workes同时运行、输出最终结果。本地写中间文件在减少了对网络带宽的压力同时减少了写中间文件的时间耗费。执行Reduce时,根据从Master获得的中间文件位置信息,Reduce使用远程过程调用,从中间文件所在节点读取所需的数据。
Map—Reduce模型具有很强的容错性,当worker节点出现错误时,只需要将该worker节点屏蔽在系统外等待修复,并将该worker上执行的程序迁移到其他worker上重新执行,同时将该迁移信息通过Master发送给需要该节点处理结果的节点。Map-Reduce使用检查点的方式来处理Master出错失败的问题,当Master出现错误时,可以根据最近的一个检查点重新选择一个节点作为Master并由此检查点位置继续运行。
Map-Reduce仅为编程模式的一种,微软提出的DryadLINQ是另外一种并行编程模式。但它局限于.NET的LINQ系统同时并不开源,限制了它的发展前景。
Map-Reduce作为一种较为流行的云计算编程模型,在云计算系统中应用广阔。但是基于它的开发工具Hadoop并不完善。特别是其调度算法过于简单,判断需要进行推测执行的任务的算法造成过多任务需要推测执行,降低了整个系统的性能。改进Map-Reduce的开发工具,包括任务调度器、底层数据存储系统、输人数据切分、监控“云”系统等方面是将来一段时间的主要发展方向。另外,将Map-Reduce的思想运用在云计算以外的其他方面也是一个流行的研究方向。
3 云计算和其他超级计算的区别
3.1云计算与网格计算的区别
Ian Foster将网格定义为:支持在动态变化的分布式虚拟组织(Virtual Orgallizations)间共享资源,协同解决问题的系统。所谓虚拟组织就是一些个人、组织或资源的动态组合。
图5 “云”系统的结构
图6网格的结构
图5和图6分别为云及网格的结构示意图。图5显示,云计算是一种生产者-消费者模型,云计算系统采用以太网等快速网络将若干集群连接在一起,用户通过因特网获取云计算系统提供的各种数据处理服务。图6显示,网格系统是一种资源共享模型,资源提供者亦可以成为资源消费者,网格侧重研究的是如何将分散的资源组合成动态虚拟组织。主要区别如表4所示。
云计算和网格计算的一个重要区别在于资源调度模式。云计算采用集群来存储和管理数据资源,运行的任务以数据为中心。即调度计算任务到数据存储节点运行。而网格计算,则以计算为中心。计算资源和存储资源分布在因特网的各个角落,不强调任务所需的计算和存储资源同处一地。由于网络带宽的限制,网格计算中的数据传输时间占总运行时间的很大一部分。
网格将数据和计算资源虚拟化,而云计算则进一步将硬件资源虚拟化,活用虚拟机技术,对失败任务重新执行,而不必重启任务。同时,网格内各节点采用统一的操作系统(大部分为UNIX),而云计算放宽了条件,在各种操作系统的虚拟机上提供各种服务。和网格的复杂管理方式不同,云计算提供一种简单易用的管理环境。另外,网格和云在付费方式上有着显著的不同。网格按照同定的资费标准收费或者若干组织之间共享空闲资源。而云则采用用时付费以及服务等级协议的模式收费。其他区别不再赘述。
(责任编辑:adminadmin2008)