【IT168 资讯】当人们对云计算众说纷纭,认为它在改变整个计算世界时,我们看到了一些迹象,证实云计算的确掀起了计算领域的革新浪潮。当一项新技术诞生时,人们往往把它当作包治百病的灵丹妙药。新技术就像一把锤子,为了让锤子发挥作用人们四处寻找钉子,甚至把一切事物都看成了钉子。云计算也不例外。接下来我们将深入了解云计算以及它对高性能计算与通信(HPCC)的影响。
什么是云计算?
首先,我们来探讨云计算的定义和特点,了解人们对其感兴趣的原因。鉴于围绕云计算的信息太多,我会试着对其进行简单的定义。我们还是称之为"云计算"吧。这样一来,我们便可以通过Google搜索引擎找到许多关于"云计算"的定义。我最喜欢的定义如下:
"云计算是一种计算模式,在这种模式下,任务被分配给可通过网络获得的连接、软件和服务。这种服务器与连接的网络统称为‘云'。云规模的计算能赋予用户超级计算机级别的能力。"
我认为上述定义能概括云计算的全部含义,但不足之处在于它的用语比较专业。许多类似的定义都包含诸如"超级计算机级别的能力"之类的用语,但却没有充分阐明这类用语的内涵。也许"云计算"应作如下更高级的定义:
"云计算支持应用在‘云'中某处运行,可以是您的电脑、公司或家庭网络,甚或互联网本身,但实际上用户无需了解、也不用担心应用运行的具体位置。"
尽管不甚明显,但云计算无处不在,其中Google当数最大的云计算的使用者。使用Google搜索引擎您需要在Google运行的大量系统上展开搜索。这些系统是仅在咫尺还是远在天边都是未知数。您也可以使用Gmail或Google开发和提供的其它常用工具(Google Docs),它们的工作原理相近。采用Google Docs之类的应用,您的数据会保存在互联网上的某个位置(您不用担心也无法知道具体的位置),您可以通过任何一个与互联网相连的系统访问这些数据(十分便利)。
云计算的其它实例有Amazon、Facebook、Youtube、Myspace以及其它社交网站。您也可以将大型多人在线游戏(MMOG)囊括在云计算的范畴内。在MMOG中,您可以通过位于网络中的系统与全球各地的游戏小组或个人共同作战或对抗厮杀(您无需特别留意他们的具体位置)。关于云计算的例子数不胜数,《无尽的任务》(EverQuest)、《魔兽世界》、《网络创世纪》(Ultima Online)和Second City等都属于云计算之列。
综上,云计算无处不在,它的优势无时不在。因此,许多人称云计算是HPCC的未来,究其原因,自然是因为它用途广泛、易于使用以及成本低廉(在大多数情况下),同时它还能为用户带来超级计算机级别的性能。在核实云计算是否能带给用户超级计算机级别的性能之前,让我们首先查看"应用纲要",即应用成功运行所需的资源集。
云计算应用纲要
确保云计算成功执行的一大要素是应用纲要,即应用运行所需的资源和作用方式。在广义上,当前云计算应用具备下列纲要:
应用不会出现任何程度的并行,也未进行线程化。
几乎所有应用都不需要过多的内存带宽和高CPU使用率。
应用很少执行与其计算相关的IO,但也会存在例外,如实际上并未在"云"上运行的数据库。
应用可进行自我修复。也就是说,一旦应用因故出现故障,它能轻松重启或恢复,而不会对用户的工作造成太大的中断。
大多数日常应用(如制作演示幻灯、撰写文档和电子表单、畅玩游戏等)都是串行应用,许多功能往往都放置在了桌面上(很可能采用AJAX)。Google等公司开发出了针对云计算的存储系统,但这些文件系统主要面向具备上述纲要的应用(例如hadoop)。由于您必须使用MapReduce来访问和使用这些文件系统,因而它们在传统HPC应用上的适用性会受到限制。
上述应用特征同样适用于许多企业应用。换而言之,它们是IO量极少的串行应用。当然也存在IO密集型企业应用,如数据库等,但它们通常不会在总体应用排名中占据优势。
HPCC计算应用纲要
HPCC应用具备各种应用纲要。典型应用涉及并行计算,可能含有大量的IO。同时,串行(单节点)HPCC应用可能执行许多IO任务。因此,HPCC应用的纲要范围十分广。下面简要列出了HPCC应用的几项要素。
许多应用为串行应用,其中各种进程之间存在一些数据通信。
有时进程间的数据传输量很少。
例如:某CFD代码
有时进程间的数据传输量很大。
例如:WRF
有些应用为串行应用或线程化应用,运行于单个节点上。
例如:BLAST
有些串行或并行应用执行许多IO任务。
例如:Ansys、Abaqus或Nastran等FEA代码
有些串行或并行应用不执行许多IO任务。
有些应用能够生成一个检查点,即一份计算进程的快照。
一旦系统因故出现故障,它能够从上一个检查点重新启动,而无需从一开始重启。
并非所有应用都具备这一功能。
只需查看应用纲要即可了解HPCC应用之间的巨大差异。显然,HPCC应用具备与当前的云计算应用不同的应用纲要。正因为存在这个差异,一些HPCC应用能够适用于云计算模式,而有些却不适用。在下一章节,我们将探讨哪些HPCC应用能够在云计算模式下运行良好,哪些不适用于云计算模式且不可能适用于这一模式。
云计算中的HPCC应用
从目前来看,云计算应用和HPCC应用似乎有很大不同,但仔细分析后不难发现,两者之间仍然存在着一些共同点。某些HPCC应用并不依赖于节点间的通信,也不需要太多的IO(如BLAST)。这些特定应用的应用纲要能够很好地与云计算能力相契合。那么,这样的应用有哪些呢?事实上,现在还很难找到此类具体应用,因为并行应用完全能在单个节点上正常运行。只要数据集能在无需交换的情况下置入节点,应用就可以在云计算环境中运行。下面是一份有关HPCC应用需求的速列清单,明确列出了在云计算环境下应用和数据集之间应如何配合才能确保两者的正常运行。
应用必须运行于单个节点。
数据集必须位于单个节点。
非IO密集型应用。
应用需快速运行,或创建一个检查点(自我检查点)。
因此,适合云计算环境的HPCC应用的应用纲要还是比较有限(但绝非完全没有)。
例如,任何一个属于蒙特卡罗模拟(Monte Carlo simulation)的应用都可以运行在云计算环境中。蒙特卡罗模拟是指稍微改变数据或输入参数即可进行数百万次运算的模拟,它也可指那些具有概率性质或计算不确定性的应用。
另一类能够正常运行于云计算环境的应用是大型搜索应用。目前Google已经掌握了云计算技术,但其它领域也同样存在着搜索应用。例如,BLAST可用于搜索和比较生物序列信息。因此在搜索大型序列信息数据库时,会生成和执行大量的搜索。而每次搜索都能在单一节点中执行(尽管已经出现并行版本的BLAST)。
在云计算环境中运行必须考虑的最后一个问题是数据安全性。企业和实验室一般利用HPCC应用来创造新产品或开展新研究,这无疑是一项优势。但企业必须要确保数据的安全。如果您是在云计算环境中运行专属应用,就必须考虑数据安全性问题。到目前为止,业界尚未对云计算数据安全问题进行真正意义上的讨论或关注。
云计算 = 网格计算?
如果您在几年前接触过高性能计算(HPC),那么您一定听说过网格计算。由于网格计算和云计算都能够将位于不同位置的不同资源集中在一个系统中,因此两者在理念上十分类似。网格计算能够将不同任务提交至集中任务调度器进行分配,决定在何处运行应用,以达到在网格中运行HPC代码的目的。应用既可以在本地运行,也可能在相距数千英里的其它系统上运行。这样看来,网格计算和云计算似乎并无区别。但实际上,两者之间有本质的不同。
首先,网格计算能够运行任何HPC代码,即使其中包含大量的进程间通信或IO,而云计算就无法做到这一点。前者的优势在于您能够在网格中运行MPI代码,将位于不同地方的系统集中在一个系统中。但实际上,由于带宽有限、系统间的延迟过高,应用并不能以这种方式运行。当前的网格更像是采取了元调度(meta-scheduling)的运行方式,即将任务提交至集中调度点进行分配,让它决定应用运行的系统。因此,应用不会在多个系统上运行,而是在网格内的单一系统上运行。
网格计算和云计算之间存在一个非常重要的差异:在云计算环境下,应用中不能出现跨节点的进程间通信,IO量也不能太多;而网格计算则允许应用中包含大量的跨节点进程间通信,以及单一系统所能容纳的IO量。
总结
现在回顾一下前面讨论的内容。
云计算需使用串行应用(运行于单枚内核或单一节点),拥有限于单一节点的数据集,只进行少量IO操作,且无需数据保护。
运行HPCC应用需满足一系列条件,如运行于单一节点(如BLAST)或运行于多个并行节点。此外,它们还可能产生大量IO,同时还必须考虑数据安全性问题。
网格计算能够运行HPCC应用,用户可以不知道这些应用的运行位置(类似于云计算),但却需要满足HPCC应用的所有要求。
在对上述三类计算模式进行深入观察后,我们可以很容易找出它们之间的差异,并选择最能满足您计算需求的模式。
观察与展望
什么是云计算?云计算如何影响HPCC?这个问题提得很好。云计算在很多方面类似于网格计算,但两者在应用纲要上还是存在一些本质差异,这也限制了HPCC应用对云计算优势的利用。我认为,云计算只能对特定的HPCC领域产生影响,如那些无需(或仅需少量)进程间通信,且IO量非常有限的应用。如今,人们还在四处寻找云计算的用武之地。如此看来,现在的云计算技术尚处在"幼年时期",您完全无需改变原有的HPCC策略。
但在另一方面,HPCC的定义也在不断变化。在过去,HPCC一直以大型设备(比台式机大)上的科学或工程计算应用,或计算量极大的数学或科学领域应用为重心。但在最近一段时间内,已经有人开始尝试在商务智能(BI)应用领域中实施HPCC,甚至连数据库这样的应用也开始出现在HPCC应用环境中,同时还有人考虑将HPCC扩展到游戏或娱乐应用(《第二人生》(Second Life)或《网络创世纪》(Ultima Online)等大型多人在线游戏)等领域。即使是Google这样的搜索引擎也在考虑之列。
随着HPCC范畴的不断扩大,云计算也许将在HPCC中得以广泛应用。但这也只是一种猜测。谁知道呢?也许这些应用终会"改名换姓",将HPCC永远束之高阁也说不定。