解读“IT明日之星”——云计算
云计算是近来最有召唤力的IT技术,吸引许多不同技术领域厂商争相投入,但是,在经过多方不同立场的解读后,云计算反而像是一团难理解的云雾。现在就来彻底解读云计算。
Google提出的分布式运算技术,让开发人员很容易开发出全球性的应用服务,云计算技术可以自动管理大量标准化(非异质性)计算机间的沟通、任务分配和分布式储存等。
云源自分散平行运算,但比网格更擅长数据运算
云技术可以算是网格技术的一个子集合,两者目的相同,都是要把系统的复杂性隐藏起来,让使用者只要使用而不需要了解系统内部如何运作。
各方跟进Google推广云服务,但定义不同
不同业者对于云计算的定义各有不同,只有广义上对于「云模式」的概念是相通的。凡是透过因特网提供应用服务,让使用者透过浏览器就能使用,不需要了解服务器在哪里,内部如何运作,都被称为云计算的服务。
Yahoo用Hadoop处理4 PB的网页
Yahoo架构工程师Vivek Ratan表示:「目前使用Hadoop框架的云计算,任务规模最大的是Yahoo用来建立网页索引数据库的运算,同时使用1万个Linux平台的处理器核心,处理1兆个网页连结,从4PB的数据,运算得出300TB的索引数据。」
趋势用云技术解决大量资料的全球移动难题
趋势科技4年前就开始利用平行运算的网格技术,来提供云服务。
使用云运平台后,不论美国或中国的研究人员,都可以透过同一套运算平台,共享病毒分析的数据。
云技术降低SaaS门坎,小公司也能做全世界的生意
工研院信息与通讯研究所副所长余孝先认为,即使企业没有足够的能力或财力,自行建立自己的机房与网络架构,都能够利用Amazon或Google的信息架构,来提供全球性的SaaS(Software-as-a-Service)服务。
云计算核心技术MapReduce
云计算的关键技术MapReduce,是一种解决问题的程序开发模型,也是开发人员拆解问题的方法。最早由Google提出,后来也运用在开源的云技术Hadoop中。
云源自平行运算,但比网格更擅长数据运算
最近,中研院网格计算团队主持人林诚谦不论走到哪里,都被问到一件事,从新加坡的学术论坛,到南台湾的学术圈交流场合,大家都问他:「Google谈的云计算(Cloud Computing),和网格运算(Grid Computing)有什么不同?」
云源自分散平行运算,但比网格更擅长数据运算
「云技术可以算是网格技术的一个子集合,」林诚谦说:「两者目的相同,都是要把系统的复杂性隐藏起来,让使用者只要使用而不需要了解系统内部如何运作。」
林诚谦认为,网格技术涵盖了云技术,但是,网格能够处理更复杂的问题,而云技术则可视为是网格技术的一种商业化结果。
「云计算是从网格技术的分散平行运算技术和观念发展出来,业界再用新名词来包装原有技术,只是使用的比喻不同。」他进一步说:「对计算机产业而言,这么做很重要,因为有助于推广大众对这项技术的了解。」
同样地,高速网络与计算中心企业与计划管理组计划主持人黄维诚认为,大体上来看,云计算和网格运算背后的哲学是一致的,他说:「对使用者来说,不需要了解服务器是什么?在哪里?就是把需求丢进去,就会得到结果,这是云计算的想法,也是网格运算的想法。」
再进一步分析两者的差异,黄维诚说:「虽然云计算源自平行运算的技术,不脱离网格运算的哲学,但是云计算更专注在数据的处理。」
单次数据处理量小,让云计算发展出不同于网格运算的实作方式
从处理的数据型态来看,黄维诚认为:「云计算适合的任务,多半是数据处理次数频率高,而每一次要处理的数据量小。」
云计算vs.网格运算 | ||
|
云计算 |
网格运算 |
主要推动者 |
信息供货商(如Google、Yahoo、IBM、Amazon等) |
学术机构(如欧洲粒子研究中心CERN、中研院、国家高速网络与计算中心) |
标准化程度 |
无标准化,各家采用的技术架构也不同。 |
有标准化的协议和信任机制 |
开源幅度 |
部分开源,目前有开源Hadoop框架,但Google GFS和数据库系统BigTable则未开源。 |
完全开源 |
网域限制 |
企业内部网域 |
可跨企业、跨管理网域 |
单一运算丛集可支持的硬件 |
相同标准规格的个人计算机 (如x86处理器、硬盘、4GB 内存、Linux等) |
可混合异质性服务器(不同处理器、不同操作系统、不同编译器版本等) |
擅长处理的数据特性 |
单次运算数据量小(可于单台个人计算机上执行),但需要重复大量处理次数的应用。 |
单次运算数据量大的应用。例如单笔数GB的卫星讯号分析。 |
例如像是网页搜寻的工作,每一次运算只需要比对一个网页,比对数据的大小可能不超过1MB,但是,全世界有几十亿个网页,若要全数比对,要比对的总数据量就非常可观。黄维诚认为,这种特性与网格运算擅长的类型不大相同,网格运算适合解决科学研究,例如分析卫星回传的信息,每一次要分析的讯息档案就高达数GB。
即使云计算与网格技术同是采用平行运算的哲学,但因为云计算较适合执行单次数据处理量较小的任务,黄维诚认为,云计算在实作方式上就会与网格运算不同。
他进一步解释:「例如搜寻网页,每一次要比对的网页,其实档案都不大,所需耗费的处理器资源不多,所以用大量的个人计算机就可以来执行网页搜寻的运算,但是,要用个人计算机来架设网格运算就比较难,因为网格运算所需的处理资源较大。」
所以,实作的差异就是,云计算可以组合大量的个人计算机来提供服务,而网格运算则需要依赖能提供大量运算资源的高效能计算机。
网格技术的理想,是要让任何服务器,都能加入到一个运算网格中,以提供庞大的运算量,因而在技术上的困难,就是要解决不同服务器、操作系统、甚至是程序编译器版本差异等异质性问题。
然而,以Google的云计算做法为例,则是使用大量规格相同的个人计算机等级服务器,来执行云计算的程序,所以不需要处理异质性的问题,可以简化平行运算的系统架构,更容易协调服务器间的信息传递,让分布式处理的整体效能更好。许多Google的产品或服务,例如Google搜寻、Gmail、Google Maps、Google Docs等,都使用到云计算的技术,藉由大量低价服务器的运算资源,来满足大量使用者的需求。
云名词解释
●云计算(Cloud Computing):Google提出的分布式运算技术,让开发人员很容易开发出全球性的应用服务,云计算技术可以自动管理大量标准化(非异质性)计算机间的沟通、任务分配和分布式储存等。
●网格运算(Grid Computing):在网络上,透过标准化协议与信任机制,整合跨网域中的异质服务器,建立运算丛集系统来共享运算资源、储存资源等。
●服务在云(In-the-Cloud)或云服务(Cloud Service):供货商透过因特网提供服务,使用者只需透过浏览器就能使用,不需了解供货商的服务器如何运作。
●MapReduce模式:Google运用在云计算中的关键技术,让开发者开发大量数据的处理程序。先透过Map程序将数据切割成不相关的区块,分配给大量计算机处理,再透过Reduce程序将结果汇整,输出开发者需要的结果。
●Hadoop:使用Java开发的开源云计算框架,也是采用Google云计算技术实作的框架,但所用的分布式档案系统与Google不同。2006年Yahoo成为该计划最主要的贡献者和使用者。
各方跟进Google推广云服务,但定义不同
从去年中开始,Google更进一步大力推广云计算,Google全球副总裁李开复说:「云计算是Google最重要的关键技术,也是网络应用的未来趋势。」他认为,除了使用者可以使用Google云计算的服务以外,不论企业规模大小,也可以运用Google的服务来满足企业内部的信息应用需求,或者利用Google提供的平台,例如Google App Engine,将自己开发的应用程序,藉由Google提供的云计算环境,来服务全世界的使用者。
Google本身网络服务的成功案例,以及它对云计算的推广,陆续地吸引了其它业者如Yahoo、IBM、微软、HP等,也纷纷表示自己拥有云计算的产品和技术,或者未来将提供采用云计算的服务。
不过,不同业者对于云计算的定义又各有不同。只有广义上对于「云模式」(Cloud Model)的概念是相通的。不论服务的类型,或者是执行服务的信息架构,凡是透过因特网提供应用服务,让使用者透过浏览器就能使用,不需要了解服务器在哪里,内部如何运作,都被称为云计算的服务,背后的技术也概称为云计算。循此广义地定义,另有业者也将这类应用称为云服务(Cloud service)或在云层里的服务(in-the-cloud)。
Amazon利用虚拟化技术提供云计算服务
Amazon提供的EC2(Elastic Compute Cloud)和S3(Simple Storage Service)服务,与Google云服务的实作方式不同。
EC2采用Xen虚拟化技术,提供一个虚拟的执行环境(虚拟实例Instance,或称为虚拟机器),让租用Instance的企业来执行自己的应用程序。Amazon提供不同规格的Instance,例如一个超大型的Instance组合,就包括15 GB 内存、8 个EC2运算单位(类似4个双核心虚拟处理器)、1690 GB储存空间、64位平台。
企业只需要将自己的操作系统、网站服务器和应用程序打包成一个Image档案,上传到EC2的服务器后,呼叫EC2提供的指令来执行Image文件即可启动服务,就像是拥有一台实体服务器一样,企业可以自行控制在Instance中执行的操作系统。
EC2是提供Image档案执行的环境,但结束后无法保留数据,所以,Amazon另外提供了一个分布式档案系统S3,供企业保存EC2运算的输出结果。另外Amazon还提供了很多现成的Image范例,将常用的操作系统、网站服务器、数据库系统都先打包成一套执行环境模板,企业可以将这些Image檔放到租用的Instance中执行,再把自己的网页应用程序上传到自己的Instance中,即可提供服务,不需要自己花时间进行各种系统的安装与设定。
另外Amazon还能让企业在执行应用程序的过程中,动态调整租用Instance的运算规格,例如原来租用的Instance运算速度满载,或频宽不够时,还能动态扩增可使用的运算资源,或者增加新的Instance来分担流量。
各业者提供的云计算,背后架构各有不同
Amazon透过Xen虚拟化技术,让企业不需处理实体服务器的维运,而能执行自己的服务,从广义上来说,也是一种隐藏运算复杂性的云服务。这与Google所使用的云计算,在实作技术上完全不同。
实际上,其它业者例如微软,Yahoo也是自行开发云计算平台,各家采用的理论和实作架构不尽然相同。
不过,Google并非直到去年才开始对外发表这些云计算的技术,其实,早在2004年,参与Google基础架构建置的资深工程师Jeffrey Dean,和同僚在OSDI(Operating Systems Design and Implementation)研讨会中,发表了Google云计算的核心技术模式MapReduce,以及Google使用这些技术的成果。Jeffrey Dean在报告中指出云计算受到平行运算的List语言和函数编程(functional lauguage)的启发,将原本的Map和Reduce两种编程概念结合成MapReduce这个新模式,Google发现MapReduce运算模式,很适合用来处理大量数据的分布式运算。
开源社群用Google经验发展出Hadoop框架
Google发表MapReduce后,2004年开源社群也用Java实作出一套使用MapReduce技术的框架Hadoop,让Java开发者可以很容易写出云计算的应用。随着Hadoop框架的开发者Doug Cutting在2006年加入Yahoo,Yahoo遂成为Hadoop最主要的贡献者和使用者,许多Yahoo提供的服务,例如网页搜寻,已经是利用Hadoop框架所开发的云计算。
目前Hadoop是唯一一套开源的云计算框架,虽然与Google使用的云计算技术略有不同,但是核心的设计概念都是来自Google的MapReduce模式和分布式档案架构,Google也有不少工程师参与Hadoop计划的发展,例如发起Google云计算学术计划的工程师Christophe Bisciglia,也参与了Hadoop的开发。
Google云计算架构 | |
MapReduce |
Big Table |
GFS(Google File System)档案系统 |
Yahoo用Hadoop处理4 PB的网页
Yahoo架构工程师Vivek Ratan也是Hadoop框架的开发者之一,他表示:「目前使用Hadoop框架的云计算,任务规模最大的是Yahoo用来建立网页索引数据库的运算,同时使用1万个Linux平台的处理器核心,处理1兆个网页连结,从4PB的数据,运算得出300TB的索引数据。」他进一步补充:「以相用的机器设备,改用Hadoop来处理相同任务,比起原本利用丛集运算的方式,节省了1/3的时间。」
云计算用来处理大量数据的优势,也吸引了许多企业投入。例如IBM去年宣布和Google合作,在大陆进行蓝云计划(Blue Cloud),使用Hadoop框架,来处理科学计算或提供云计算的服务。
和传统超级计算机或大型主机的架构相比,Vivek Ratan认为云计算的系统架构是完全不同的设计典范,传统大型主机是垂直式扩充(Vertical Scaling)的设计架构,而像Hadoop或Google的云计算,则是采取水平式扩充(Horizontal scaling)的设计架构。
垂直式的扩充,是指不断提高单一台服务器的运算能力,例如,尽力让单一台服务器配备更多的运算核心,来提升应用程序可以处理的数据量;而水平式扩充则是,不断增加服务器的数量,就能提高应用程序可以处理的数据量,而不需要提高单一台服务器的运算能力。所以,以采取水平式扩充设计的Hadoop来说,随着使用应用程序服务的使用者越来越多,要处理的资料量越来越大,就只需要不断增加新服务器即可,而不需要修改原来的应用程序代码。
Vivek进一步指出水平式扩充的两个优点,他说:「因为可以藉由大量扩充服务器来提高运算能力,所以不需要使用很贵的服务器,一般PC等级的计算机就足够。」买一台大型主机需要上千万元,但是企业用相同的费用可买到数百台个人计算机,透过Hadoop整合,就能提供超过单一台大型主机的运算能力,换言之,可以使用更低的成本,得到更高的运算效能。
另一个更大的优点是可以提高系统容错能力。虽然单一台大型主机的运算能力很高,但就像是将所有鸡蛋都放在同一个篮子中,一旦当机,主机所执行的应用程序就会完全停摆,无法提供服务,即使有备援系统,也需要一段时间来转换服务。在Hadoop的架构下,则是透过一台Master主机将程序切割成很多部分,分配到很多台电脑中执行,即使有几台电脑当机,Master主机也能马上将需要运算的部分交给闲置的计算机执行,整体的应用程序服务不会中断。
Vivek表示,在单一任务的运算中,甚至是即便有十分之一的计算机当机,运算仍旧可以继续执行,他说:「虽然效能会变慢,但是不会中断。」网管人员只需要将作业环境的备份文件,回复到新的机器中,就可以很快再加入Hadoop的运算环境中提供服务。
降低成本只是短期效益,速度会促成创新应用
运算成本的降低是云计算最明显的效益,Google工程研究所简立峰表示:「大型企业逐渐感受到单台服务器、储存和维护等成本增加的压力,以及管理人力增加的问题,目前有兴趣的企业,多半先看到云计算降低成本和人力的好处。」他接着说:「再坚持一段时间,这些企业就会看到云计算的速度价值。」
简立峰认为过去很多企业所提供的网络应用,往往受到技术上的限制,顾虑到企业使用的运算环境无法胜任大量数据处理及大量使用者联机,因此能提供的可行服务有限。但是,透过云计算,可以用较低的成本来处理大量资料,提供使用者几乎是实时的信息服务。简立峰说:「速度是产生应用的关键,随着数据量越大,就越能感受到速度的差异。」
趋势科技正是善用云服务的速度,来提供新的网络安全服务。趋势大约从4年前开始使用平行运算技术,来提供企业用户过滤网页内容的服务。随着网页内容检查的需求越来越高,企业或一般使用者希望趋势科技的安全防护,可以过滤像是钓鱼网站或恶意连结的网页内容,确保用户上网时的安全。
但是病毒演化速度越来越快,网页恶意程序的手法日趋复杂,趋势科技发现需要庞大的运算能力,才足以分析每天47亿笔的网页内容,而且病毒码更新速度也必须随时更新,才能让使用者的防护没有空窗期。
趋势科技研究开发部项目经理杨觐宁说:「当外面环境快速改变时,使用者希望安全厂商还是能够提供保障,因而产品更新的速度就很重要。」
再加上,趋势的研究团队分散在中国、美国与日本等地,每天需要分析的数据量高达Terabytes的等级,若要跨国搬移数据,所需联机成本非常高,速度也很慢,连带也会影响了产品更新的速度。
杨觐宁指出,趋势利用开源的云技术与网格技术,将服务放到云(in-the-cloud),不但可以让服务的反应速度很快、开发解决方案的速度很快,还能解决大量数据要跨地域运算的问题。她说:「过去要跑一天的分析任务,现在几秒钟就可以得到结果。如果使用者得等一天才能获得安全防护,根本就来不及。对资安厂商来说,云服务是非做不可。」
趋势科技很早就体会到云计算的威力,当相关技术都还在发展的过程,就已经开始投入。随着Google和Yahoo今年都相继推广云计算,同时也与不少大学合作培训云计算的开发人力。简立峰认为企业运用云计算的时机渐渐成熟,进入门坎将会越来越低,他说:「未来的应用都会跟云计算有关,对想要创新的企业来说,可以开始思考这个技术的可能性。」
Yahoo云计算架构(Hadoop) | |
Hadoop |
HBase |
GFS(Google File System)档案系统 |
趋势用云技术解决大量资料的全球移动难题
趋势科技4年前就开始利用平行运算的网格技术,来提供云服务(in-the-cloud服务),用来解决网页过滤服务中同时上线使用者数不足的问题。后来,趋势科技从网页内容过滤,进一步发展出检查钓鱼网站、恶意程序的网站信誉评等服务(Web Reputation Services)。
趋势科技的网站信誉评等服务,不仅检查网页,还需对每一个网页中的每一个档案内容,进行关连分析,才足以确保使用者的浏览安全,所需要处理的复杂性高于网页索引。
目前趋势科技总共监控近1630亿个活跃网站的内容,每天需重新检查可疑网站,一天要处理近47亿个网页数据,数据量达TB等级。趋势科技研究开发部项目经理杨觐宁说:「相同的分析工作,过去需要一天的运算时间,改用云技术后,现在只需要几秒钟。」
除此之外,云计算技术还解决了趋势科技的病毒数据库跨国移动的难题。因为趋势科技的研究人员分散在中国和美国等地,为了分析病毒特征,必须将中国搜集的数据传输到美国,让研究人员处理。若直接将TB等级的数据,传到美国执行分析,结束后再传回来,需要的网络传输费用很高。
使用云运平台后,不论美国或中国的研究人员,都可以透过同一套运算平台,共享病毒分析的数据,杨觐宁说:「不只是缩短数据传输时间,也加快了趋势开发新产品的速度。」
适合云计算的应用
离线批次任务
● 大型数据集(PB等级)、整批读写(MB级数据区块)
●可接受暂时中断的应用
●例如文件内容索引、网页索引、Log分析、卫星照片分析等
在线应用
●小型数据集(TB等级)、少量读写(KB级数据区块)
●中断需要立即出现的服务、需要低度延迟的服务
●例如网站搜寻、Gmail、Google Docs等
其它应用
●信息检索、自然语言处理、机器学习、影音处理、自动翻译
云技术降低SaaS门坎,小公司也能做全世界的生意
不论是Amazon去年推出的EC2和S3服务,或是Google 新推出的Google App Engine,都可以让企业租用运算资源或储存空间,来执行企业自己开发的应用程序。
工研院信息与通讯研究所副所长余孝先认为:「这是新的机会!Google或Amazon所提供的云应用平台服务,大幅降低了云计算的使用门坎。」他进一步解释,即使企业没有足够的能力或财力,自行建立自己的机房与网络架构,都能够利用Amazon或Google的信息架构,来提供全球性的SaaS(Software-as-a-Service)服务。
余孝先说:「就好像很多小型的IT设计业者,几个工程师设计出来的IC产品,可以透过台积电的代工厂,将产品卖到全世界。台积电平台作为支点,带动了IC设计产业发展。」他认为新的云服务平台也将有同样的效果。
当网络上的SaaS服务越来越多,越来越多人将数据放在网络之后,进一步会带动的技术,余孝先认为,就是宽带无线网络的技术,他说:「WiFi、WiMAX的重要性会更明显,不论工作或娱乐都需要连到云的那一端,所以使用者随时都会想要享有快速的网络频宽。」
接下来,企业或开发者将会面临的唯一限制,就是新的开发思维。「云计算创造了新的开发典范,开发人员要面临的新挑战是,没有处理器限制、没有网络频宽限制、没有资料量限制以后,我们可以有什么样的应用?」简立峰表示。
云计算核心技术MapReduce
云计算的关键技术是MapReduce,最早是由Google提出,后来也运用在开源的云技术Hadoop中。简立峰说:「这是一种解决问题的程序开发模型。」
和传统开发模式相比,简立峰表示:「使用MapReduce模式,开发人员在拆解问题的过程中,就要先对问题进行平行化处理。」开发人员需要先分析问题的解决流程,找出可以利用平行运算来处理数据的部分,也就是那些能够被切成小段分开来处理的数据,再针对可以采用平行处理的部分写成Map程序。
有了Map程序之后,就可以使用大量机器用执行Map程序,分别同步处理分析每一段数据,再将每一个Map程序分析出来的结果,透过Reduce程序进行合并,最后则汇整出完整的结果。
MapReduce的运作方式很像选举开票,Yahoo亚洲区科技研发工程部总监许明彦说:「只要大家都遵守固定的开票程序,那由谁来开票其实都没有影响。所以,中选会可以将开票任务分配给各地投票所,各自负责所属的票箱,最后再向中选会回报各开票所的开票结果,中选会再统一汇整,就能算出全国的开票结果,这样就不需要把几百万张选票都运回中选会处理。」各投票所的开票任务就像是Map程序,负责处理少量数据,而Reduce程序就是中选会汇整投票结果的动作。
开发者将问题拆解成MapReduce的程序后,就可以交由云计算的平台来执行,例如Hadoop。Hadoop框架中的Master机器会将开发者的MapReduce程序分配给有空闲的服务器,一群服务器先执行Map程序来处理切割过的小块数据。再将分析后的结果,送到执行Reduce程序的机器中混合、排序与汇整。最后再把汇整后的结果输出给开发者。
不过,国家高速网络与计算中心助理研究员王耀聪认为MapReduce不一定能有效处理各种问题,他举例,像目前的生物研究信息都是采用XML格式,要转换成Key-Value数据库架构的设计方式,程序开发并不容易。
趋势科技研究开发部项目经理杨觐宁则认为:「MapReduce使用Script语法,除错不易,而且不见得所有工作都要用MapReduce来处理。」她解释,像数据加解密,用CGI程序来处理反而比较快,只要先将CGI程序安装到所有云计算的机器上,还是可以透过Master机器来分配任务。
不过,Google软件工程师谈伟航解释:「理论上透过多阶段的MapReduce,可以组合出各种解决问题的路径。但关键还是对问题本身的了解,如果开发者越清楚,就越能知道拆解出问题的路线。」简立峰认为,资工系大学二年级的训练课程就足以学习云计算技术。
目前Google固定和大学合作,派工程师担任课堂助教,教导学生学习云计算的技术,简立峰希望每年都能轮流到不同大学与教授合作开课,他说:「只要培养1年,就可以有上千人学会云计算技术,学生进入就业市场后,企业也就学到了。」
云计算关键技术MapReduce的执行流程
MapReduce是云计算的关键技术,将要执行的问题,拆解成Map和Reduce的方式来执行,以达到分散运算的效果。例如要搜寻哪些网页中有「iThome」这个字,可以先用Map程序,来计算出所有网页中,每一个字的位置。再使用Reduce程序,在每一个字的清单中,筛选出「iThome」这个字,所对应的网页网址。
不论Google或Yahoo所采用的MapReduce执行概念相同,只是储存的档案系统不同(Google是GFS,而Yahoo是HDFS)。MapReduce程序的执行过程如下:
1 将要执行的MapReduce程序复制到Master与每一台Worker机器中。
2 Master决定Map程序与Reduce程序,分别由哪些Worker机器执行。
3 将所有的数据区块,分配到执行Map程序的Worker机器中进行Map。
4 将Map后的结果存入Worker机器的本地磁盘。
5 执行Reduce程序的Worker机器,远程读取每一份Map结果,进行汇整与排序,同时执行Reduce程序。
6 将使用者需要的运算结果输出。