云计算 分布式 并行计算概念区分
时间: 2015-10-09来源:数据观
前景提要
云计算 分布式 并行计算概念区分
来源: 数据观 时间:2015-10-09 16:21:46 作者:
  云计算、分布式、并行计算等概念区分理解比较困难,小编在网上整理若干资料,希望能为你解答疑惑。
  云计算和分布式有什么区别
  “云是一个更上层、更抽象、更玄乎的概念。
  而分布式是一个很具体的概念。
  若没有分布式,云就无从谈起。但分布式计算却不一定都是云。”
  分布式是通过应用设计,将任务进行分解。
  云计算是通过类似网格的东西,由系统自动进行资源组合。
  什么是分布式计算?所谓分布式计算是一门计算机科学,它研究如何把一个需要非常巨大的计算能力才能解决的问题分成许多小的部分,然后把这些部分分配给许多计算机进行处理,最后把这些计算结果综合起来得到最终的结果。 最近的分布式计算项目已经被用于使用世界各地成千上万位志愿者的计算机的闲置计算能力,通过因特网,您可以分析来自外太空的电讯号,寻找隐蔽的黑洞,并探索可能存在的外星智慧生命;您可以寻找超过1000万位数字的梅森质数;您也可以寻找并发现对抗艾滋病病毒的更为有效的药物。这些项目都很庞大,需要惊人的计算量,仅仅由单个的电脑或是个人在一个能让人接受的时间内计算完成是决不可能的。
  分布式计算是利用互联网上的计算机的 CPU 的闲置处理能力来解决大型计算问题的一种计算科学。下面,我们看看它是怎么工作的:
  首先, 要发现一个需要非常巨大的计算能力才能解决的问题。这类问题一般是跨学科的、极富挑战性的、人类急待解决的科研课题。其中较为著名的是:
  1.解决较为复杂的数学问题,例如:GIMPS(寻找最大的梅森素数)。
  2.研究寻找最为安全的密码系统,例如:RC-72(密码破解)。
  3.生物病理研究,例如:Folding@home(研究蛋白质折叠,误解,聚合及由此引起的相关疾病)。
  4.各种各样疾病的药物研究,例如:United Devices(寻找对抗癌症的有效的药物)。
  5.信号处理,例如:SETI@Home(在家寻找地外文明)。
  从这些实际的例子可以看出,这些项目都很庞大,需要惊人的计算量,仅仅由单个的电脑或是个人在一个能让人接受的时间内计算完成是决不可能的。在以前,这些问题都应该由超级计算机来解决。但是, 超级计算机的造价和维护非常的昂贵,这不是一个普通的科研组织所能承受的。随着科学的发展,一种廉价的、高效的、维护方便的计算方法应运而生——分布式计算!
  随着计算机的普及,个人电脑开始进入千家万户。与之伴随产生的是电脑的利用问题。越来越多的电脑处于闲置状态,即使在开机状态下CPU的潜力也远远不能被完全利用。我们可以想象,一台家用的计算机将大多数的时间花费在“等待”上面。即便是使用者实际使用他们的计算机时,处理器依然是寂静的消费,依然是不计其数的等待(等待输入,但实际上并没有做什么)。互联网的出现, 使得连接调用所有这些拥有限制计算资源的计算机系统成为了现实。
  那么,一些本身非常复杂的但是却很适合于划分为大量的更小的计算片断的问题被提出来,然后由某个研究机构通过大量艰辛的工作开发出计算用服务端和客户端。服务端负责将计算问题分成许多小的计算部分,然后把这些部分分配给许多联网参与计算的计算机进行并行处理,最后将这些计算结果综合起来得到最终的结果。
  当然,这看起来也似乎很原始、很困难,但是随着参与者和参与计算的计算机的数量的不断增加, 计算计划变得非常迅速,而且被实践证明是的确可行的。目前一些较大的分布式计算项目的处理能力已经可以达到甚而超过目前世界上速度最快的巨型计算机。
  您也可以选择参加某些项目以捐赠的 Cpu 内核处理时间,您将发现您所提供的 CPU 内核处理时间将出现在项目的贡献统计中。您可以和其他的参与者竞争贡献时间的排名,您也可以加入一个已经存在的计算团体或者自己组建一个计算小组。这种方法很利于调动参与者的热情。
  随着民间的组队逐渐增多, 许多大型组织(例如公司、学校和各种各样的网站)也开始了组建自己的战队。同时,也形成了大量的以分布式计算技术和项目讨论为主题的社区,这些社区多数是翻译制作分布式计算项目的使用教程及发布相关技术性文章,并提供必要的技术支持。
  那么谁可能加入到这些项目中来呢? 当然是任何人都可以! 如果您已经加入了某个项目,而且曾经考虑加入计算小组, 您将在中国分布式计算总站及论坛里找到您的家。任何人都能加入任何由我站的组建的分布式计算小组。希望您在中国分布式总站及论坛里发现乐趣。
  参与分布式计算——一种能充分发挥您的个人电脑的利用价值的最有意义的选择——只需要下载有关程序,然后这个程序会以最低的优先度在计算机上运行,这对平时正常使用计算机几乎没有影响。如果你想利用计算机的空余时间做点有益的事情,还犹豫什么?马上行动起来吧,你的微不足道的付出或许就能使你在人类科学的发展史上留下不小的一笔呢!
  海量数据,分布式计算,并行计算 ,虚拟化与云计算的关系是怎样的?
  回答一:
  海量数据:我们对数据存储扩展性和高可用性,对数据进行分析的效率都提出了要求,第一点涉及到云存储和分布式存储。第二点涉及到分布式计算和并行计算。
  分布式计算和并行计算:并行计算偏科学领域,偏单用户,单请求,在配置多处理机的服务器下处理。分布式计算偏多用户,多请求,涉及多台服务器多个计算单元的分布式处理。分布式计算本身又分为两种,一种是单任务拆分,如mapreduce来实现;一种是多请求分布式调度,涉及到云计算paas层的核心能力。
  虚拟化和云计算:云计算重点是要有可调度的计算单元或存储单元,而且调度单元的粒度不能太粗,否则影响到资源利用,调度单元本身要相互隔离。而虚拟化作用则是对已有计算或存储能力进行拆分,形成标准化的,物理或逻辑上隔离的可调度单元。如果机器本身就是利旧,能力一般,那么虚拟化不是云计算的必备选择。
  回答二:
  分布式,并行和虚拟化是OS里面的传统概念。云计算或多或少的基于这三个,有点新瓶装旧酒的意思。
  回答三:
  半个门外汉,不懂装懂一下吧。
  我们来想象一个用户场景
  你是一个创业者,想开发一个移动应用,需要一个后台,于是自然想到了成本最低的云计算。
  云计算有很多种,典型的是PaaS,SaaS, IaaS.
  你的需求是想要发布自己的网站,自己定制后台的服务器,自己定制数据库。 PHP+MySQL,能用自己的移动应用API。
  云计算:
  于是找到一个云计算提供商,看了看价格,比如 $/cup*mem*hour, $/IO, $/storage. 算了算价格,发现按照你创业初期有1k个用户的预期,开销很小,假设没有用户,一个月内撤销这些机器也亏不了太多。于是下了订单,租用了几台机器。 这便是云计算。
  虚拟化:
  下了订单之后,云计算提供商的后台便开始为你调度机器, 按照你的要求,给你生成了3台RHEL6,1台Windows的机器。 其实这几台机器可能都是在同一宿主机上生成的虚拟机,这便是虚拟化的好处。
  随后,你便在这些环境中部署好了你的服务器和数据库,万事俱备,应用上线。
  海量数据:
  在这1000个用户使用了应用一个月后,产生了大量的用户数据,这才是最宝贵的资源。也许算不上海量,但也有几个G了。其中可以挖掘的包括用户的习惯,关注的热点,甚至能发现程序的瓶颈,等等。 但是这些数据必须被准备和分析后才能产生最直观的human-readable的数据。 于是你想到了用hadoop做一下大数据分析。
  分布式计算:
  你用现成的3台机器搭了一个hadoop集群,开始跑你的分析作业. 这个分析作业的任务是可以分而治之的,在3台机器上的效率将会大大提高。hadoop把这个作业调度到了3台机器上,这便是分布式计算。
  并行计算:
  分配在每一台机器上的子任务的多个进程在同步和通信上做的也很好,做到了很好的并发,这便是并行计算。
  最后,这个作业完成了分析和统计,得到了你想要的结果。
  不知道这样的回答有没有帮助你将这一系列的概念串了起来呢。
  分布式计算与云计算
  先说分布式计算和并行计算的异同:
  解决对象上:都是大任务化为小任务,这是他们共同之处。
  但是分布式的任务包互相之间有独立性,上一个任务包的结果未返回或者是结果处理错误,对下一个任务包的处理几乎没有什么影响。因此,分布式的实时性要求不高,而且允许存在计算错误(因为每个计算任务给好几个参与者计算,上传结果到服务器后要比较结果,然后对结果差异大的进行验证,我个人感觉这样有助于发现科学家们真正想要找的)!
  分布式要处理的问题一般是基于“寻找”模式的。所谓的“寻找”,就相当于穷举法!为了尝试到每一个可能存在的结果,一般从0~某一数值被一个一个的测试,直到我们找到所要求的结果。事实上,为了易于一次性探测到正确的结果,我们假设结果是以某个特殊形式开始的。在这种类型的搜索里,我们也许幸运的一开始就找到答案;也许不够走运以至于到最后才找到答案,这都很公平。
  这么说,并行程序并行处理的任务包之间有很大的联系,而且并行计算的每一个任务块都是必要的,没有浪费的分割的,就是每个任务包都要处理,而且计算结果相互影响,就要求每个的计算结果要绝对正确,而且在时间上要尽量做到同步,而分布式的很多任务块可以根本就不处理,有大量的无用数据块,所以说分布式计算的速度尽管很快,但是真正的“效率”是低之再低的,可能一直在寻找,但是永远都找不到,也可能一开始就找到了;而并行处理不同,它的任务包个数相对有限,在一个有限的时间应该是可能完成的。
  分布式计算提出了一个让工作站端能够在后台持许工作的方法,而用户完全不需关心任何东西。这种实现基于两个原则,其一是任务连续分配和空闲优先权,其二是写一个屏幕保护程序。现在的调度程序已经不错了,而空闲优先任务将在人们完全不用关心任何东西的情况下自动执行。利用屏幕保护程序可以利用计算机闲置的时间计算工作任务。
  分布式的编写一般用的是C++(也有用JAVA的,但是都是娱乐性质的项目了,不是主流),基本不用MPI接口。并行计算用MPI或者OpenMP。如果把网格计算算做分布式计算(网格计算是分布式计算的一种特例,但是有区别,区别仅仅在编程方法和实际应用的范围上),网格计算使用中间件!而且对联网的各台计算机的操作系统的要求比较特殊。
  相关阅读
   云计算概念详解:共享软硬件资源信息
  分布式系统的特点以及设计理念
  本文为 数据观原创精编,转载请注明来源 www.cbdio.com   百度一下“数据观”,获取更多大数据相关资讯
  微信搜索“数据观”,关注后有一大波大数据干货奉送
扫码关注

科技资讯:

科技学院:

科技百科:

科技书籍:

网站大全:

软件大全:

热门排行