2012年5月月 发布的文章

大数据处理三大瓶颈:大容量、多格式和速度

导读:Yahoo CTO Raymie Stata是领导海量数据分析引擎的关键人物。IBM和Hadoop将更多的精力专注在海量数据上,海量数据正在潜移默化的改变企业和IT部门。
 
越来越多的大企业的数据集以及创建需要的一切技术,包括存储、网络、分析、归档和检索等,这些被认为是海量数据。这些大量信息直接推动了存储、服务器以及安全的发展。同时也是给IT部门带来了一系列必须解决的问题。
信息技术研究和分析的公司Gartner认为海量数据处理应该是将大量的不同种类以及结构化和非结构化的数据通过网络汇集到处理器和存储设备之中,并伴随着将这些数据转换为企业的商业报告。
海量数据处理的三个主要因素:大容量数据、多格式数据和速度
大容量数据(TB级、PB级甚至EB级):人们和机器制造的越来越多的业务数据对IT系统带来了更大的挑战,数据的存储和安全以及在未来访问和使用这些数据已成为难点。
多格式数据:海量数据包括了越来越多不同格式的数据,这些不同格式的数据也需要不同的处理方法。从简单的电子邮件、数据日志和信用卡记录,再到仪器收集到的科学研究数据、医疗数据、财务数据以及丰富的媒体数据(包括照片、音乐、视频等)。
速度:速度是指数据从端点移动到处理器和存储的速度。
 
Kusnetzky集团的分析师Dan Kusnetzky在其博客表示“简单的说,大数据是指允许组织创建、操作和管理的庞大的数据集和存储设施工具”。这是否意味着将来将会出现比TB和PB更大的数据集吗?供应商给出的回应是“会出现”。
他们也许会说“你需要我们的产品来管理和组织利用大规模的数据,只是想想繁杂大量的维护动态数据集带来的麻烦就使人们头疼“。此外海量数据的另外一个价值是它可以帮助企业在适当的时机作出正确决策。
 
从历史上看,数据分析软件面对当今的海量数据已显得力不从心,这种局面正在悄然转变。新的海量数据分析引擎已经出现。如Apache的Hadoop、LexisNexis的HPCC系统和1010data(托管、海量数据分析的平台供应商)的以云计算为基础的分析服务。
101data的高级副总裁Tim Negris表示海量数据的收集以及存放和利用海量数据实际上完全是两回事。在做任何事前需要大量(准备数据)的工作是像Oracle和大多数数据库厂商所面临的难题之一。我们正是要消除这个难题,并把数据直接交到分析师的手中。Hadoop和HPCC系统做到了这一点。这三个平台都着眼于海量数据并提供支持。
开源的Hadoop已经在过去5年之中证明了自己是市场中最成功的数据处理平台。目前Cloudera的首席执行官和Apache基金会的Doug Cutting是Hadoop的创始人,他曾在Yahoo工作过。
Hadoop将海量数据分解成较小的更易访问的批量数据并分发到多台服务器来分析(敏捷是一个重要的属性,就像你更容易消化被切成小块的食物)Hadoop再处理查询。
“Gartner和IDC的分析师认为海量数据的处理速度和处理各种数据的能力都是Hadoop吸引人们的地方”。Cloudera的产品副总裁Charles Zedlewski说到。
在Cutting和他的Yahoo团队提出Hadoop项目之后,在Yahoo IT系统测试并广泛使用了很多年。随后他们将Hadoop发布到开源社区,这使得Hadoop逐渐产品化。
在Cutting和Yahoo在开发、测试并内部运行代码时,他们了解到使用起来还是很复杂的。这导致他们马上意识到如果在未来提供周边服务(例如提供直观的用户界面、定制部署和附加功能软件)可赚取更多的资金。
 
在2009年Cloudera作为一家独立公司开始运营,公司产品采用开源并产品化Hadoop分析引擎和Cloudera企业版(Cloudera Enterprise整合了更多的工具,包括Hive、HBase、Sqoop、Oozie、Flume、Avro、Zookeeper、Pig和Cloudera Desktop)。
Cloudera得到了大量投资者的青睐,这其中包括VMware的创始人和前首席执行官Diane Greene、Flickr的联合创始人Caterina Fake、MySQL前首席执行官Marten Mickos、Linkedln总裁Jeff Weiner和Facebook CFO Gideon Yu。
自从Cloudera成立以来,只有少数的顶级公司和初创公司免费提供他们基于Hadoop开放源代码架构制作的自己的版本。
这是一场真正的企业科技的竞争。就像在一场接力赛中,所有选手都必须使用同一种类型的接力棒(Hadoop的代码)。企业竞争主要集中在处理数据的速度、敏捷性和创造性上。这场竞争是迫使大多数企业在海量数据分析市场有所作为最有效的方法。
IBM提供了基于Hadoop的InfoSphere BigInsights(IBM InfoSphere BigInsights 是用于分析和虚拟化海量数据的软件和服务,这款新产品由 Apache Hadoop 提供技术支持。)基本版和企业版。但公司有更大的计划。
IBM CEO Sam Palmisano表示IBM正在将新一代数据分析作为公司的研发重点,IBM在此项目上投资了1亿美元。IBM院士和计算机科学研究室主任Laura Haas表示IBM实验室的研究远远超出了海量数据的范围,并已经着手”Exadata“分析研究。Watson就是IBM在数据海量数据研究的成果,Watson将用于更多用途,包括卫生保健、科学研究等。
其他Hadoop版本
MapR发布了一个分布式文件系统和MapReduce引擎,MapR还与存储和安全的领导厂商EMC合作向客户提供了Greenplum HD企业版Hadoop存储组件 。EMC Hadoop的另一个独特之处在于它没有采用官方版本的Apache代码,而是采用Facebook的Hadoop代码,后者在可扩展性和多站点部署上进行了优化。
另一家厂商 Platform Computing,Platform提供了与Apache Hadoop MapReduce编程模型完全兼容的分布式分析平台,并支持多种分布式文件系统。
 
SGI(Silicon Graphics International )提供基于SGI Rackable和CloudRack服务器产品实施服务的Hadoop优化解决方案。
戴尔也开始出售预装该开源数据处理平台的服务器。 该产品成本随支持选项不同而异,基础配置价格在11.8万美元至12.4万美元之间,包含为期一年的Cloudera支持和更新,6个PowerEdge C2100服务器(2个管理节点,1个边缘节点和3个从站节点,以及6个戴尔PowerConnect 6248交换机)。
替代品浮出水面。包括1010data的云服务、LexusNexis公司的Risk,该系统在10年间帮助LexusNexis公司分析大量的客户数据,并在金融业和其他重要的行业中应用。LexusNexis最近还宣布要在开源社区分享其核心技术以替代Hadoop。LexisNexis公司发布一款开源的数据处理方案,该技术被称为HPCC系统。
HPCC可以管理、排序并可在几秒钟内分上亿条记录。HPCC提供两种数据处理和服务的方式——Thor Data Refinery Cluster和Roxy Rapid Data Delivery Cluster。Escalante表示如此命名是因为其能像Thor(北欧神话中司雷、战争及农业的神)一样解决困难的问题,Thor主要用来分析和索引大量的Hadoop数据。而Roxy则更像一个传统的关系型数据库或数据仓库,甚至还可以处理Web前端的服务。
LexisNexis CEO James Peck表示我们认为在当下这样的举动是对的,同时我们相信HPCC系统会将海量数据处理提升到更高高度。
 
在2011年6月Yahoo和硅谷风险投资公司Benchmark Capital周二联合宣布,他们将联合成立一家名为Hortonworks的新公司,接管被广泛应用的数据分析软件Hadoop的开发工作。
据一些前Yahoo员工透露,从商业角度来看Hortonworks将保持独立运营,并发展其自身的商业版。
在转型时期,Yahoo CTO Raymie Stata成为关键人物,他将负责公司所有IT项目的发展。Stata表示相对于Yahoo,在Hortonworks我们会投入更多的精力在Hadoop的工作和相关技术上,我们认为应加大对Hadoop的投资。我们会将一些关键人员指派到Hortonworks公司,但这既不是裁员也不是分拆。这是在加大对Hadoop的投入。Yahoo将继续为Hadoop的发展做出更大的贡献。
Stata解释说,Yahoo一直有一个梦想,就是将Hadoop变为大数据分析软件的行业标准。但是这必须将Hadoop商业化。Stata表示创建Hortonworks的主要原因是因为Yahoo已经看到了未来企业分析(感谢Hadoop 6年以来的发展)的未来,并知道该怎样去做。我们看到海量数据分析将很快成为企业非常普遍的需求。
我们将Hadoop部署在企业之中,我不认为所有人都否定这样的解决方案。我们要通过Hadoop为我们的股东创造价值。如果某一天Hadoop成为海量数据处理的行业标准,这将是对我们最好的奖赏。

Hadoop是分布式计算的未来

Hadoop为何物?
虽说Hadoop的名声很大,但是总还是有同学不太了解的,这里一笔带过一下。
Google分布式计算三驾马车:
Hadoop的创始源头在于当年Google发布的3篇文章,被称为Google的分布式计算三驾马车(Google还有很多很牛的文章,但是在分布式计算方面,应该这三篇的影响力最大了):,链接的文章比我介绍得更清晰,当然最好还是看看原文了,这是做分布式系统、分布式计算的工程师必修课。
Google File System用来解决数据存储的问题,采用N多台廉价的电脑,使用冗余(也就是一份文件保存多份在不同的电脑之上)的方式,来取得读写速度与数据安全并存的结果。
Map-Reduce说穿了就是函数式编程,把所有的操作都分成两类,map与reduce,map用来将数据分成多份,分开处理,reduce将处理后的结果进行归并,得到最终的结果。但是在其中解决了容错性的问题。
BigTable是在分布式系统上存储结构化数据的一个解决方案,解决了巨大的Table的管理、负载均衡的问题。
Google就靠着这几样技术,在搜索引擎和广告方面取得了举世瞩目的成就。不过Google不是傻的,这三篇文章虽然都是干货,但是不是直接就可以用的。话说Google发表了这三篇文章后,在学术界引起了轩然大波,大家对这三样东西提起了浓厚的兴趣,都想着是不是可以实现一下,以为己用。
Doug Cutting:
Doug Cutting之前是一个非常有名的开源社区的人,创造了nutch与lucene(现在都是在Apache基金会下面的),nutch之前就实现了一个分布式的爬虫抓取系统。等Google的三驾马车发布后,Doug Cutting一看,挖靠这么厉害的技术,于是就实现了一个DFS(distributed file system)与Map-Reduce(大牛风范啊),集成进了Nutch,作为Nutch的一个子项目存在。那时,是2004年左右。
在互联网这个领域一直有这样的说法:
“如果老二无法战胜老大,那么就把老大赖以生存的东西开源吧”
当年与Google还是处在强烈竞争关系的Yahoo!于是招了Doug兄进来,把老大赖以生存的DFS与Map-Reduce开源了。开始了Hadoop的童年时期。差不多在2008年的时候,Hadoop才算逐渐成熟。
现在的Hadoop:
现在的Hadoop不仅是当年的老二Yahoo的专用产品了,从Hadoop长长的用户名单中,可以看到Facebook,可以看到Linkedin,可以看到Amazon,可以看到EMC, eBay,Tweeter,IBM, Microsoft, Apple, HP…(后面的一些未必是完全使用)。国内的公司有淘宝、百度等等。
我来定义一下Hadoop:
Hadoop是一套开源的、基础是Java的、目前能够让数千台普通、廉价的服务器组成一个稳定的、强大的集群,使其能够对pb级别的大数据进行存储、计算。已经具有了强大稳定的生态系统,也具有很多使用的延伸产品。比如做查询的Pig, 做分布式命名服务的ZooKeeper, 做数据库的Hive等等。
为什么世界上只有一个Hadoop?
我的前公司是国内某一个著名互联网公司的子公司,专注做云计算,我也在这个公司最兴盛的时候进入,当时宣传的口号是“做最好的云计算”,就是希望自己开发一套存储计算系统(就是类似于前面提到过的dfs与map-reduce),并且克服一些Hadoop的缺点(比如说用c++去实现,克服Java的一些性能问题)。后来结局可能大家也猜到了,投入了很多钱,招了不少牛人,确实也做出了还算不错的云计算(至少在国内是数一数二的)。但是最终不管从稳定性还是效率上还是scalable来说,都远远被Hadoop甩在了后面。虽然我前公司这个云计算项目是否会成功,这里没办法预测,但是前途终究还是比较黯淡的。
最近一年还听说国内不少的互联网巨头都成立了云计算部门,做“自己的”云计算,有些小得像创业时期一样的公司,都宁愿自己写一套map-reduce框架,不愿意直接使用Hadoop。可能这个跟国人的想法,武功秘笈一定要自己藏着,不让别人学,传男不传女。对别人白给你的东西,非常不放心,觉得大家都能学到的东西,肯定竞争力是不够的。
除开心态问题不谈,但从技术实力上来说,一般国内公司的核心开发团队的能力和当年的Yahoo!比,还是有非常大的差距的,至少像是Doug兄这样的大牛是很罕见的,从开发者的实力来说,就差了不止一个档次。
其次从积累来说,Hadoop从初创到现在也经过了至少7年的积累的,碰到过很多刁钻客户的问题都慢慢克服了(比如Facebook的超大数据存储),带给用户的经验教训是很充足的,比如说性能调优这一块,就有非常多的文章去介绍。而自己开发一个,什么都需要从头再来。
最后也是最重要的是,Hadoop形成了一个强大稳定的生态系统,里面有生产者(共享改进的代码、fix bug),也有消费者(使用项目并且反馈经验),Hadoop的用户也可以获得较大的经济利益(不花钱买软件,还可以增加效率)。对于一个开源社区来说,构建出一个完整的生态系统是非常非常的困难,一旦构造出来了,项目就会很稳定的往前去进步。
Hadoop的优势
之前分析了一些“虚”的东西,比如生态系统什么的,这里说说一些实际的东西。
Benchmark:
Hadoop现在保持了很多漂亮的记录:
存储:现在世界上最大的Hadoop集群目前在Facebook,可以存储30PB的数据
计算:Hadoop是目前Terasort记录的保持者(参见:http://sortbenchmark.org/),Terasort是给出1TB的随机数据,看谁能够在最短的时间内完成排序,Hadoop使用了1400多个节点,在2分钟内完成1T的数据排序。
这里顺便说一下,之前给出网站里面有很多的benchmark,可以看到Hadoop的集群是最大的,使用的机器最多的,像是TritonSort这样的集群,使用了区区50多个节点,最终的结果并不比Hadoop差太多,但是这里得注意一下。TritonSort是专门用来做排序的,里面加入了相当多的优化,但是Hadoop是一个通用的集群,并没有为了一种任务进行如此多的优化。从用户的角度上来说,愿意花钱去买一个只会排序的电脑是意义不那么大的。
注:左右两边属于两种不同的terasort,hadoop是其中一种的记录保持者
能做什么?
前面说的基本的存储和计算Hadoop是一定能胜任的,下面谈谈一些“高级”的功能。
常见的数据库操作,比如orderby、select这样的操作都可以的,Hive就是支持这样的Sql模型,能够将Sql语句最终转化到Map-Reduce程序中去。其性能和可用性已经得到了证明,Facebook就用它做了不少的数据分析的工作
常见的机器学习、矩阵分析算法,目前Mahout作为一个发展迅速的项目,在逐渐填补Hadoop在机器学习领域的空白,现在常见的分类、聚类、推荐、主成分分析算法(比如SVD)都已经有相应的Map-Reduce实现了。虽然目前从用户群和效率上来说是不够的,但是从它的发展来说应该会很快的达到工业界的标准
Hadoop的劣势
现在Hadoop依然有很多的问题没有解决,这让有些人非常的怀疑Hadoop的未来,这里谈谈Hadoop的一些重要的劣势
HA(High Availability)高可用性:
这一点是Hadoop非常弱的一个缺点,不管是Hdfs还是Map-reduce,都是采用单master的方式,集群中的其他机器都是与一台中心机器进行通信,如果这个中心机器挂了,集群就只有不工作了(不一定数据会丢失,但是至少需要重启等等工作),让可用性变得更低。这个一般叫做单点失败(single point of failure,SPOF)。
虽然现在有些公司已经给出了解决方案,比如EMC就有用Vmware搭建虚拟集群,对master节点进行镜像备份,如果master挂掉,那么立刻换上镜像备份的机器,使其可用性变高,不过这个终究不是一个内置的解决方案,而且Vmware这一套东西也并不便宜。
不过之后这个问题将会得到非常好的解决,我在Hadoop的未来这一章将说以说。
Hadoop目前解决得不那么好的一些算法:
Join等:
Map-Reduce还有一个问题是,对于Join这个最常见的数据库操作,支持力度还是不够,特别是针对那种上TB的数据,Join将会很不给力,现在已经有了一些解决方案,比如说SIGMOD’2010的这篇文章:
A Comparison of Join Algorithms for Log Processing in MapReduce
不过在现在的情况下,只有尽量的避免大数据库的Join操作
需要进行很多轮迭代、循环的算法:
对于循环,Map-Reduce稍好,比如矩阵计算,高斯消元法这样的,循环的次数的确定的算法,实现起来还是不难,只是有点慢。但是迭代就更麻烦了,因为现在的Map-Reduce的mapper和reducer是不太方便去弄这样的终止条件。
还有就是迭代次数超多的算法(比如说矩阵的SVD分解),在超大矩阵的情况下,迭代次数可能会上亿次。而Map-Reduce在每次迭代的时候都会把数据往文件里面读写一遍,这样的浪费的时间是巨大的。
其实Map-Reduce不是绝对没有办法去解决这些问题,而只是现在这个还不是最重要的日程,Hadoop还有很多很多的东西可以优化,比如说前面提到的HA,这些东西只有往后放放,我将在之后的Hadoop的未来部分,谈谈未来版的Hadoop怎么去解决这些问题。
编程复杂,学习曲线陡峭:
对于一般的map-reduce框架,hello world程序就变成了word count,就是给出一堆的文本文件,最终统计出里面每一个不同的单词出现的次数,这样一个简单的任务(可能在linux shell下一行就写出来了),在Map-reduce中需要几十行,一般新人从理解word count到写出自己的word count,到跑通,一个星期是肯定需要的。这样陡峭的学习曲线让许多人难以深入。
另外还有一点Hadoop被人所诟病的是,代码丑陋,虽然Hadoop是用高级语言Java写成的,但是里面对每一个步骤都要分成mapper和reducer,这个被戏称为新时代的汇编语言。
一般来说,做数据分析的人程序都写得不咋地(强哥这样的达人除外),能写写matlab,R,或者spss就差不多了,如果要让他们去写map-reduce,那就等于叫他们别干活了。而大数据的重要的作用就是用来做数据分析,Hadoop的未来发展必须得抓住这群数据分析师的心。
其实现在已经有一些实验中的产品,让用户可以用高级语言编程,不会再看到丑丑的map-reduce了。我在前公司的时候就与团队一起做了还不错的尝试,至少,数据分析师可以用Python来编程了。map-reduce变成了一个底层的东西,现在不是某些人在分析性能的时候就贴上汇编代码吗,之后可能会变成在前段的程序效率不行的时候,就贴上后端Java的map-reduce程序。
所以对这个难题之后肯定会解决掉,底层分布式程序开发与用户将被清楚的分开,之后想要写word-count一定会像hello world一样简单。
Hadoop的未来怎么样?
http://www.slideshare.net/hortonworks/apache-hadoop-023 (hadoop 0.23)
给出这样的一个官方文档,谈谈之后的hadoop的发展。目前的hadoop的稳定版是0.20.x,这个0.23是个未来版,估计将在今年的Q4进行beta的发布(目前看起来,至少代码是写了很多了) 。
HDFS Federation
首先是一个叫做HDFS Federation的东西,它将hdfs的命名空间进行了扩展,目前的HDFS的所有文件的meta信息都保存在一台机器的内存中,使得HDFS支持的文件数目是有限的,现在进行了这样改动后,将hdfs的命名空间做成了分布式的,对之后方便对不同的用户文件夹进行管理,还有从HDFS的实现上来说,都会更为简单。
下一代的Map-Reduce:
节点数:从目前的4000增加到6000-10000台
并发的任务数:从目前的40000增加到100000
更高级的硬件支持,目前支持的硬件主要是8core, 16G ram, 4T disk, 之后将会支持16+core, 48/96G ram, 24/48T disk
架构的改变,对现在的JobTracker-TaskTracker的结构做了很大的改进,现在会用ZooKeeper去保存master的状态,避免了之前提到的SPOF
更多的编程模式的支持(这个很重要)
比如MPI,迭代程序的处理,并且在Hadoop中运行这些类型的编程模式,并且这些程序将会被Hadoop统一管理
总结
之前谈了Hadoop的优势、劣势等等,综合来说就是,优势是很明显的(比如这么多牛公司在用,并且也贡献了很多的代码),远远超出了其他的分布式系统,劣势虽然不小,但是改进这些不足的地方是在计划中,已经在实施了。而且Hadoop不仅在学术界或者是工业界,都有很高的地位,综合了这些天时地利人和,那前途还是非常光明的
http://www.uplook.cn/kbase-Index-show-view13434.html?uid=173

hadoop招聘

职位名称:Hadoop工程师
职位年薪:20-30万工作地点:北京
招聘企业:某知名上市互联网公司所属部门:技术部所属行业:互联网·电子商务,基金·…汇报对象:开发经理企业性质:国内上市公司下属人数:0企业规模:5000-10000人
岗位职责
岗位职责:
1. 将投入到对hadoop、hive、hbase等相关产品进行预言、开发、应用中;
2. 解决海量数据不断增长面临的挑战,解决业务需求。
任职资格:
1. 熟练使用java集合类,IO,并发编程;
2. 熟悉jvm运行机制及内存管理;
3. 熟悉Linux/Unix操作系统,熟悉脚本编程(Shell/Perl/Python其中一种);
4. 了解HADOOP原理,对于分布式系统有一定了解;
5. 有优秀的学习能力,具有强烈的主观能动性;
6. 计算机或相关专业本科或以上学历。
岗位要求
学历要求:全日制统招本科或以上性别要求:不限语言要求:普通话专业要求:不限年龄要求:25-35总工作年限:2年以上
任职资格的具体描述:
岗位职责:
1. 将投入到对hadoop、hive、hbase等相关产品进行预言、开发、应用中;
2. 解决海量数据不断增长面临的挑战,解决业务需求。
任职资格:
1. 熟练使用java集合类,IO,并发编程;
2. 熟悉jvm运行机制及内存管理;
3. 熟悉Linux/Unix操作系统,熟悉脚本编程(Shell/Perl/Python其中一种);
4. 了解HADOOP原理,对于分布式系统有一定了解;
5. 有优秀的学习能力,具有强烈的主观能动性;
6. 计算机或相关专业本科或以上学历。
薪酬福利
职位年薪:20-30万薪资构成:底薪年假福利:国家标准社保福利:国家标准
—————————————————————————————————————————–
职位名称:Hadoop开发工程师
职位年薪:15-18万工作地点:北京
招聘企业:某互联网广告公司所属部门:IT部门所属行业:互联网·电子商务,广告·…汇报对象:部门负责人企业性质:私营·民营企业下属人数:0企业规模:100-499人
岗位职责
1、负责搭建hadoop集群,并维护与管理;
2、负责hadoop平台上的数据存储,数据维护和优化;
3、负责编写pig,hive等分析脚本;
4、负责把分析结果导入到数据库中,为BI提供基础数据分析。
岗位要求
学历要求:全日制统招本科或以上性别要求:不限语言要求:普通话专业要求:不限年龄要求:25-40总工作年限:3年以上
任职资格的具体描述:
1、本科以上学历,3年以上相关工作经验;
2、对数据结构、算法有深刻理解;
3、熟悉linux开发环境;
4、熟悉python、shell、perl中的一种;
5、有hadoop集群部署和开发经验;
6、熟悉pig,hive,hbase, spooq,flume,scribe(优先考虑);
7、熟悉java开发(精通优先考虑)。
薪酬福利
职位年薪:15-18万薪资构成:底薪年假福利:国家标准社保福利:国家标准居住福利:住房补贴

云计算开源软件

开源云计算技术有很多, 包括Eucalyptus、OpenNebula和OpenStack等。其中很多开源技术都存在商业版,导致开源的版本功能很少或者不完善。我选择用OpenStack来实现开源云构建,因为OpenStack是完全开源的技术,没有任何收费版本或者商业版本。OpenStack是由Rackspace和NASA共同开发的云计算平台,帮助服务商和企业内部实现类似于Amazon EC2和S3的云基础架构服务(Infrastructure as a Service,IaaS)。OpIenStack包含两个主要模块:Nova和Swift,前者是NASA开发的虚拟服务器部署和业务计算模块;后者是Rackspack开发的分布式云存储模块,两者可以一起用,也可以分开单独用。OpenStack除了有Rackspace和NASA的大力支持外,后面还有包括Dell,Citrix,Cisco,Canonical这些重量级公司的贡献和支持,发展速度非常快,有取代另一个业界领先开源云平台Eucalyptus的态势。
开源云技术构建
随着信息建设的发展,每个单位的信息中心都会面临越来越多的服务器和越来越多的部门需要自己的服务器。原来单位里是按照部门给分配服务器,这样虽然看起来很好,每个部门有自己的服务器。但是资源浪费很大,因为并不是每个部门都可以把服务器资源使用到满负荷,而且每个部分还要有人管理服务器的硬件维护。虚拟化可以很好的解决这个问题,但是对于多服务器的资源整合和动态分配,资源的统一管理等方面虚拟化并不能全部解决。
我们的想法是在企业的信息中心建立企业内部的私有云。将闲置的服务器资源组成企业的私有云平台来为各个部门服务。考虑到初期的建设难度和技术门槛,我们开始完全可以基于开源的OpenStack技术从原来的虚拟化过度到IaaS(基础设施即服务)的云平台上面。
OpenStack总体上分为三个部分组成Nova、Swift和Glance。Nova负责云计算平台的资源管理。Swift是存储模块,负责映像存储、备份和归档等。Glance是映像服务模块,负责云平台中虚拟化系统的映像管理。OpenStack每个模块之间是无关联的,我们可以将所有模块部署在一台服务器,也可以部署在多台服务器。作为初步体验云平台,我们完全可以用2台服务器加一台客户机来实现云计算平台的部署。具体部署可以参考OpenStack的官方手册,这里就不在列出。随着云的建立,我们可以将单位中各个部门的服务器全部放在云里。每个部门的服务器其实就是云里的一个虚拟化实例,所有数据统一存储在Glance模块创建的卷里。每个实例可以很方便的在云里不同的硬件服务器中迁移和动态分配不同的资源给实例。
随着信息化发展,云计算平台将会越来越普及。企业早一步实现自己的云平台,就能在将来的发展中具有更大优势。通过云的应用,可以降低信息化建设成本并降低各部门重复投资的硬件与管理成本。而且目前开源云技术已经日趋成熟和稳定,完全可以满足企业的日常需要。

Hadoop大事记

2004年– 最初的版本(现在称为HDFS和MapReduce)由Doug Cutting和Mike Cafarella开始实施。
2005年12月– Nutch移植到新的框架,Hadoop在20个节点上稳定运行。
2006年1月– Doug Cutting加入雅虎。
2006年2月– Apache Hadoop项目正式启动以支持MapReduce和HDFS的独立发展。
2006年2月– 雅虎的网格计算团队采用Hadoop。
2006年4月– 标准排序(10 GB每个节点)在188个节点上运行47.9个小时。
2006年5月– 雅虎建立了一个300个节点的Hadoop研究集群。
2006年5月– 标准排序在500个节点上运行42个小时(硬件配置比4月的更好)。
06年11月– 研究集群增加到600个节点。
06年12月– 标准排序在20个节点上运行1.8个小时,100个节点3.3小时,500个节点5.2小时,900个节点7.8个小时。
07年1月– 研究集群到达900个节点。
07年4月– 研究集群达到两个1000个节点的集群。
08年4月– 赢得世界最快1 TB数据排序在900个节点上用时209秒。
08年10月– 研究集群每天装载10 TB的数据。
09年3月– 17个集群总共24 000台机器。
09年4月– 赢得每分钟排序,59秒内排序500 GB(在1400个节点上)和173分钟内排序100 TB数据(在3400个节点上)。

Hadoop发展历史

Hadoop这个名字不是一个缩写,它是一个虚构的名字。该项目的创建者,Doug Cutting如此解释Hadoop的得名:”这个名字是我孩子给一头吃饱了的棕黄色大象命名的。我的命名标准就是简短,容易发音和拼写,没有太多的意义,并且不会被用于别处。小孩子是这方面的高手。Googol就是由小孩命名的。”
Hadoop及其子项目和后继模块所使用的名字往往也与其功能不相关,经常用一头大象或其他动物主题(例如:”Pig”)。较小的各个组成部分给与更多描述性(因此也更俗)的名称。这是一个很好的原则,因为它意味着可以大致从其名字猜测其功能,例如,jobtracker 的任务就是跟踪MapReduce作业。
从头开始构建一个网络搜索引擎是一个雄心勃勃的目标,不只是要编写一个复杂的、能够抓取和索引网站的软件,还需要面临着没有专有运行团队支持运行它的挑战,因为它有那么多独立部件。同样昂贵的还有:据Mike Cafarella和Doug Cutting估计,一个支持此10亿页的索引需要价值约50万美元的硬件投入,每月运行费用还需要3万美元。 不过,他们相信这是一个有价值的目标,因为这会开放并最终使搜索引擎算法普及化。
Nutch项目开始于2002年,一个可工作的抓取工具和搜索系统很快浮出水面。但他们意识到,他们的架构将无法扩展到拥有数十亿网页的网络。在 2003年发表的一篇描述Google分布式文件系统(简称GFS)的论文为他们提供了及时的帮助,文中称Google正在使用此文件系统。 GFS或类似的东西,可以解决他们在网络抓取和索引过程中产生的大量的文件的存储需求。具体而言,GFS会省掉管理所花的时间,如管理存储节点。在 2004年,他们开始写一个开放源码的应用,即Nutch的分布式文件系统(NDFS)。
2004年,Google发表了论文,向全世界介绍了MapReduce。 2005年初,Nutch的开发者在Nutch上有了一个可工作的MapReduce应用,到当年年中,所有主要的Nutch算法被移植到使用MapReduce和NDFS来运行。
Nutch中的NDFS和MapReduce实现的应用远不只是搜索领域,在2006年2月,他们从Nutch转移出来成为一个独立的Lucene 子项目,称为Hadoop。大约在同一时间,Doug Cutting加入雅虎,Yahoo提供一个专门的团队和资源将Hadoop发展成一个可在网络上运行的系统(见后文的补充材料)。在2008年2月,雅虎宣布其搜索引擎产品部署在一个拥有1万个内核的Hadoop集群上。
2008年1月,Hadoop已成为Apache顶级项目,证明它是成功的,是一个多样化、活跃的社区。通过这次机会,Hadoop成功地被雅虎之外的很多公司应用,如Last.fm、Facebook和《纽约时报》。(一些应用在第14章的案例研究和Hadoop维基有介绍,Hadoop维基的网址为http://wiki.apache.org/hadoop/PoweredBy。)
有一个良好的宣传范例,《纽约时报》使用亚马逊的EC2云计算将4 TB的报纸扫描文档压缩,转换为用于Web的PDF文件。 这个过程历时不到24小时,使用100台机器运行,如果不结合亚马逊的按小时付费的模式(即允许《纽约时报》在很短的一段时间内访问大量机器)和 Hadoop易于使用的并行程序设计模型,该项目很可能不会这么快开始启动。
2008年4月,Hadoop打破世界纪录,成为最快排序1TB数据的系统。运行在一个910节点的群集,Hadoop在209秒内排序了1 TB的数据(还不到三分半钟),击败了前一年的297秒冠军。同年11月,谷歌在报告中声称,它的MapReduce实现执行1TB数据的排序只用了68 秒。 在2009年5月,有报道宣称Yahoo的团队使用Hadoop对1 TB的数据进行排序只花了62秒时间。
构建互联网规模的搜索引擎需要大量的数据,因此需要大量的机器来进行处理。Yahoo!Search包括四个主要组成部分:Crawler,从因特网下载网页;WebMap,构建一个网络地图;Indexer,为最佳页面构建一个反向索引;Runtime(运行时),回答用户的查询。WebMap是一幅图,大约包括一万亿条边(每条代表一个网络链接)和一千亿个节点(每个节点代表不同的网址)。创建和分析此类大图需要大量计算机运行若干天。在 2005年初,WebMap所用的基础设施名为Dreadnaught,需要重新设计以适应更多节点的需求。Dreadnaught成功地从20个节点扩展到600个,但需要一个完全重新的设计,以进一步扩大。Dreadnaught与MapReduce有许多相似的地方,但灵活性更强,结构更少。具体说来,每一个分段(fragment),Dreadnaught作业可以将输出发送到此作业下一阶段中的每一个分段,但排序是在库函数中完成的。在实际情形中,大多数WebMap阶段都是成对存在的,对应于MapReduce。因此,WebMap应用并不需要为了适应MapReduce而进行大量重构。
Eric Baldeschwieler(Eric14)组建了一个小团队,我们开始设计并原型化一个新的框架(原型为GFS和MapReduce,用C++语言编写),打算用它来替换Dreadnaught。尽管当务之急是我们需要一个WebMap新框架,但显然,标准化对于整个Yahoo! Search平台至关重要,并且通过使这个框架泛化,足以支持其他用户,我们才能够充分运用对整个平台的投资。
与此同时,我们在关注Hadoop(当时还是Nutch的一部分)及其进展情况。2006年1月,雅虎聘请了Doug Cutting,一个月后,我们决定放弃我们的原型,转而使用Hadoop。相较于我们的原型和设计,Hadoop的优势在于它已经在20个节点上实际应用过。这样一来,我们便能在两个月内搭建一个研究集群,并着手帮助真正的客户使用这个新的框架,速度比原来预计的快许多。另一个明显的优点是Hadoop 已经开源,较容易(虽然远没有那么容易!)从雅虎法务部门获得许可在开源方面进行工作。因此,我们在2006年初设立了一个200个节点的研究集群,我们将WebMap的计划暂时搁置,转而为研究用户支持和发展Hadoop。

Hadoop主要子项目

* Hadoop Common: 在0.20及以前的版本中,包含HDFS、MapReduce和其他项目公共内容,从0.21开始HDFS和MapReduce被分离为独立的子项目,其余内容为Hadoop Common
* HDFS: Hadoop 分佈式文件系統 (Distributed File System) - HDFS (Hadoop Distributed File System)
* MapReduce:并行计算框架,0.20前使用 org.apache.hadoop.mapred 旧接口,0.20版本开始引入org.apache.hadoop.mapreduce的新API
* HBase: 类似Google BigTable的分布式NoSQL列数据库。(HBase 和 Avro 已经于2010年5月成为顶级 Apache 项目[1])
* Hive:数据仓库工具,由Facebook贡献。
* Zookeeper:分布式锁设施,提供类似Google Chubby的功能,由Facebook贡献。
* Avro:新的数据序列化格式与传输工具,将逐步取代Hadoop原有的IPC机制。

CPU工作原理

在了解CPU工作原理之前,我们先简单谈谈CPU是如何生产出来的。CPU是在特别纯净的硅材料上制造的。一个CPU芯片包含上百万个精巧的晶体管。人们在一块指甲盖大小的硅片上,用化学的方法蚀刻或光刻出晶体管。因此,从这个意义上说,CPU正是由晶体管组合而成的。简单而言,晶体管就是微型电子开关,它们是构建CPU的基石,你可以把一个晶体管当作一个电灯开关,它们有个操作位,分别代表两种状态:ON(开)和OFF(关)。这一开一关就相当于晶体管的连通与断开,而这两种状态正好与二进制中的基础状态“0”和“1”对应!这样,计算机就具备了处理信息的能力。
但你不要以为,只有简单的“0”和“1”两种状态的晶体管的原理很简单,其实它们的发展是经过科学家们多年的辛苦研究得来的。在晶体管之前,计算机依靠速度缓慢、低效率的真空电子管和机械开关来处理信息。后来,科研人员把两个晶体管放置到一个硅晶体中,这样便创作出第一个集成电路,再后来才有了微处理器。
看到这里,你一定想知道,晶体管是如何利用“0”和“1”这两种电子信号来执行指令和处理数据的呢?其实,所有电子设备都有自己的电路和开关,电子在电路中流动或断开,完全由开关来控制,如果你将开关设置为OFF,电子将停止流动,如果你再将其设置为ON,电子又会继续流动。晶体管的这种ON与OFF的切换只由电子信号控制,我们可以将晶体管称之为二进制设备。这样,晶体管的ON状态用“1”来表示,而OFF状态则用“0”来表示,就可以组成最简单的二进制数。众多晶体管产生的多个“1”与“0”的特殊次序和模式能代表不同的情况,将其定义为字母、数字、颜色和图形。举个例子,十进位中的1在二进位模式时也是“1”,2在二进位模式时是“10”,3是“11”,4是“100”,5是“101”,6是“110”等等,依此类推,这就组成了计算机工作采用的二进制语言和数据。成组的晶体管联合起来可以存储数值,也可以进行逻辑运算和数字运算。加上石英时钟的控制,晶体管组就像一部复杂的机器那样同步地执行它们的功能。
CPU的内部结构
现在我们已经大概知道CPU是负责些什么事情,但是具体由哪些部件负责处理数据和执行程序呢?
1.算术逻辑单元ALU(Arithmetic Logic Unit)   ALU是运算器的核心。它是以全加器为基础,辅之以移位寄存器及相应控制逻辑组合而成的电路,在控制信号的作用下可完成加、减、乘、除四则运算和各种逻辑运算。就像刚才提到的,这里就相当于工厂中的生产线,负责运算数据。
2.寄存器组 RS(Register Set或Registers) RS实质上是CPU中暂时存放数据的地方,里面保存着那些等待处理的数据,或已经处理过的数据,CPU访问寄存器所用的时间要比访问内存的时间短。采用寄存器,可以减少CPU访问内存的次数,从而提高了CPU的工作速度。但因为受到芯片面积和集成度所限,寄存器组的容量不可能很大。寄存器组可分为专用寄存器和通用寄存器。专用寄存器的作用是固定的,分别寄存相应的数据。而通用寄存器用途广泛并可由程序员规定其用途。通用寄存器的数目因微处理器而异。

        3.控制单元(Control Unit)   正如工厂的物流分配部门,控制单元是整个CPU的指挥控制中心,由指令寄存器IR(Instruction Register)、指令译码器ID(Instruction Decoder)和操作控制器0C(Operation Controller)三个部件组成,对协调整个电脑有序工作极为重要。它根据用户预先编好的程序,依次从存储器中取出各条指令,放在指令寄存器IR中,通过指令译码(分析)确定应该进行什么操作,然后通过操作控制器OC,按确定的时序,向相应的部件发出微操作控制信号。操作控制器OC中主要包括节拍脉冲发生器、控制矩阵、时钟脉冲发生器、复位电路和启停电路等控制逻辑。
4.总线(Bus)   就像工厂中各部位之间的联系渠道,总线实际上是一组导线,是各种公共信号线的集合,用于作为电脑中所有各组成部分传输信息共同使用的“公路”。直接和CPU相连的总线可称为局部总线。其中包括: 数据总线DB(Data Bus)、地址总线AB(Address Bus) 、控制总线CB(Control Bus)。其中,数据总线用来传输数据信息;地址总线用于传送CPU发出的地址信息;控制总线用来传送控制信号、时序信号和状态信息等。
CPU的工作流程
由晶体管组成的CPU是作为处理数据和执行程序的核心,其英文全称是:Central Processing Unit,即中央处理器。首先,CPU的内部结构可以分为控制单元,逻辑运算单元和存储单元(包括内部总线及缓冲器)三大部分。CPU的工作原理就像一个工厂对产品的加工过程:进入工厂的原料(程序指令),经过物资分配部门(控制单元)的调度分配,被送往生产线(逻辑运算单元),生产出成品(处理后的数据)后,再存储在仓库(存储单元)中,最后等着拿到市场上去卖(交由应用程序使用)。在这个过程中,我们注意到从控制单元开始,CPU就开始了正式的工作,中间的过程是通过逻辑运算单元来进行运算处理,交到存储单元代表工作的结束。
数据与指令在CPU中的运行
刚才已经为大家介绍了CPU的部件及基本原理情况,现在,我们来看看数据是怎样在CPU中运行的。我们知道,数据从输入设备流经内存,等待CPU的处理,这些将要处理的信息是按字节存储的,也就是以8位二进制数或8比特为1个单元存储,这些信息可以是数据或指令。数据可以是二进制表示的字符、数字或颜色等等。而指令告诉CPU对数据执行哪些操作,比如完成加法、减法或移位运算。
我们假设在内存中的数据是最简单的原始数据。首先,指令指针(Instruction Pointer)会通知CPU,将要执行的指令放置在内存中的存储位置。因为内存中的每个存储单元都有编号(称为地址),可以根据这些地址把数据取出,通过地址总线送到控制单元中,指令译码器从指令寄存器IR中拿来指令,翻译成CPU可以执行的形式,然后决定完成该指令需要哪些必要的操作,它将告诉算术逻辑单元(ALU)什么时候计算,告诉指令读取器什么时候获取数值,告诉指令译码器什么时候翻译指令等等。
假如数据被送往算术逻辑单元,数据将会执行指令中规定的算术运算和其他各种运算。当数据处理完毕后,将回到寄存器中,通过不同的指令将数据继续运行或者通过DB总线送到数据缓存器中。
基本上,CPU就是这样去执行读出数据、处理数据和往内存写数据3项基本工作。但在通常情况下,一条指令可以包含按明确顺序执行的许多操作,CPU的工作就是执行这些指令,完成一条指令后,CPU的控制单元又将告诉指令读取器从内存中读取下一条指令来执行。这个过程不断快速地重复,快速地执行一条又一条指令,产生你在显示器上所看到的结果。我们很容易想到,在处理这么多指令和数据的同时,由于数据转移时差和CPU处理时差,肯定会出现混乱处理的情况。为了保证每个操作准时发生,CPU需要一个时钟,时钟控制着CPU所执行的每一个动作。时钟就像一个节拍器,它不停地发出脉冲,决定CPU的步调和处理时间,这就是我们所熟悉的CPU的标称速度,也称为主频。主频数值越高,表明CPU的工作速度越快。
如何提高CPU工作效率
既然CPU的主要工作是执行指令和处理数据,那么工作效率将成为CPU的最主要内容,因此,各CPU厂商也尽力使CPU处理数据的速度更快。
根据CPU的内部运算结构,一些制造厂商在CPU内增加了另一个算术逻辑单元(ALU),或者是另外再设置一个处理非常大和非常小的数据浮点运算单元(Floating Point Unit,FPU),这样就大大加快了数据运算的速度。
而在执行效率方面,一些厂商通过流水线方式或以几乎并行工作的方式执行指令的方法来提高指令的执行速度。刚才我们提到,指令的执行需要许多独立的操作,诸如取指令和译码等。最初CPU在执行下一条指令之前必须全部执行完上一条指令,而现在则由分布式的电路各自执行操作。也就是说,当这部分的电路完成了一件工作后,第二件工作立即占据了该电路,这样就大大增加了执行方面的效率。
另外,为了让指令与指令之间的连接更加准确,现在的CPU通常会采用多种预测方式来控制指令更高效率地执行。
多核cpu工作原理
        双核的优势不是频率,而是对付同时处理多件事情。一个核心理论上同时只能干一件事,比如你同时在后台BT下载,前台一边看电影一边拷贝文件一边联QQ……,这么多程序同时需要CPU来响应,怎么办?靠操作系统!
        window本身就是多线程操作系统(DOS就是单线程系统,dos下2核4核和单核没区别,处理一个任务时必须停下来等待处理结束才能干下一件事),它可以把每个处理任务划分为多“份”,多个处理任务按顺序排成队列,这样单核心的CPU可以一次处理一“份”,轮流处理每个程序的“份”,这样你感觉就是CPU同时在干几件事了。但如果CPU不够强劲,同时排队等待处理的东西太多了,你就会感觉系统在等待,有延时,反应慢等等症状。再或者某个程序出现错误,死机了,很可能造成后面排队的其他任务都在那里干等,造成系统无反应的情况,按热启键都没反应。理论上如果现在有颗6G频率的单核CPU,单论处理性能应该与1个3G双核近似,甚至更高一些,因为目前双核比单核也就快不到2倍。
        原本计算机一直以单核心的工作频率作为性能的衡量,之所以放弃单核是因为目前的技术水平令单核性能继续提升遇到了瓶颈,4G P4的夭折让依靠频率提升性能的路子走进死胡同,不得已改走多核心路线,以核心数量来弥补处理能力的不足。不过慢慢的这些多核心的频率又开始奔3G去了,随着45nm的出现,双核上4G应该可以想象,所以一方面每个核心的性能还在发展,另一方面多核心集成的手段双管齐下,这样CPU的性能可以迅速提升,继续保持摩尔定律。     多核CPU就是基板上集成有多个单核CPU,早期PD双核需要北桥来控制分配任务,核心之间存在抢二级缓存的情况,后期酷睿自己集成了任务分配系统,再搭配操作系统就能真正同时开工,2个核心同时处理2“份”任务,速度快了,万一1个核心死机,起码另一个U还可以继续处理关机、关闭软件等任务。较早的操作系统如XP等需要装双核或多核补丁,能更好发挥性能或更稳定,Vistia下就不需要。
        目前几乎所有的程序在编写时是按单核心CPU写的(多核心程序优化对程序员来说是个噩梦,目前好像还没有合适的编程软件能让程序员轻松编写针对多核心的程序),因此对多核的利用率不是很高,分配任务时,往往1个核心满负荷,另一个还有空闲(留些空闲也对,要应付随时发生的其它命令)。一般2核心性能也就比单核心高60~70%甚至更低。
        4核或者将来的8核说白了还是多个核心独自处理各自的“份”,不过人多力量大,速度快,响应时间短,不易死机。当然耗电、协调性都会是个考验。

云计算虚拟化策略中的三大关键要点

摘要:虚拟化已经深入了IT各个领域。面对虚拟化潮流,唯有顺势而为早日做好部署,才能在未来的竞争中获得优势。     当然,在整个IT环境中实施虚拟化部署并不是件容易的事情,通常来说,这其中包括有:
–决定实施虚拟化的设备(全部还是部分)
–决定实施虚拟化平台的软硬件,比如是Hyper-V还是VMware或者Xenapp
–先从小部分服务器和工作站开始搭建平台,并全面测试其工作性能和资源消耗情况
–为冗余/故障设立合理的备份措施,并利用工具进行监视和纠错
从虚拟化角度来说,它的好处有很多,比如减少硬件、集中化管理、节省运营成本甚至有助于环保–低功耗(也可以称之为硬件污染)。执行虚拟化环境所带来的影响是多方面的。但它有没有负面影响呢?
虚拟化平台资源尤其是底层的硬件设备,都是可以实现共享的。主机上的虚拟机并不知道共享同一台主机的客户情况, 否则它们将会造成客户机之间的竞争。总的来说,如果所有资源密集型任务都在同一时间涌向客户机,就可能会影响到主机的性能表现。另一个缺点是,如果虚拟化平台上的主机性能受到影响,那么,它就会既影响到主机本身还会影响到共享同一主机的其他客户。
为此,我们提出在实施虚拟化策略的过程中,不能忽视以下三个关键要点:
1、日益增多的碎片会造成I/O瓶颈和性能下降问题–虚拟化平台中,文件出现碎片或者写入到磁盘的分区过于分散。
2、数据被删除时虚拟磁盘空间不会随之缩减。
3、虚拟机会争夺I/O资源,而且它们使用的时候不能跨平台有效地实施优先级。
这些问题可能会降低虚拟机的性能,也会影响迁移到虚拟平台的实现。不过,避免资源冲突和实现系统优化可以弥补这些不足。删除文件系统中的碎片有助于降低I/O资源消耗。更小的I/O请求将有助于I/O性能和可靠性的持久发挥。
磁盘空间是很宝贵的资源,虚拟环境下任何空间的浪费都不可接受的。对磁盘空间使用状况进行持续监测,特别是动态环境下的空间使用状况的监测,显得更加重要。

云计算中的虚拟化的性能提升

摘要:过去10年里,虚拟技术帮助IT工程师实现了整合资源,节约成本,助力企业增长等目标。不过,虚拟化究竟能产生多大影响呢?跟现代服务器技术打交道的工程师应该懂得利用该技术资源,帮助企业增长、扩大。通过在一台物理主机上安装多个虚拟机器,数据中心运行会更流畅,而且硬件设备的数量可以相对减少。新型的惠普ProLiant服务器配置了英特尔8核处理器,可以负载5至6台虚拟机。那么,明明可以实施虚拟化,为什么我们还紧抓住硬件不放呢?
虚拟化变得越来越容易,网络工程师也越发能接受虚拟技术。然而,现在对该技术的运用却出现了下降趋势。最近,许多公司的做法是,买一台服务器,把工作负荷放在存储网络(SAN),再安装管理程序和虚拟机。尽管这个方法可行,但IT管理员却常常略过影响虚拟服务器性能的某些重要步骤。
了解虚拟化技术
一般来讲,虚拟技术有两种类型:主机架构和裸机架构。主机架构环境下,服务器有预先安装的操作系统,例如WindowsServer2008。管理员会在原操作系统上加载安装虚拟化软件。裸机架构则完全移除原有操作系统,重新安装Linux/Unix-basedkernel作为管理程序。基本上,虚拟技术是直接安装在硬件上的。CitrixSystems的XenServer适用裸机架构,VMware公司两种技术都能提供。
裸机架构的最大优势在于虚拟机不需要其他软件就能直接访问基础硬件资源。不过,裸机架构要求更新型的硬件,譬如机载服务器必须是Intel-VT或是AMD-V。这意味着,升级的旧服务器利用不了这项技术。虽然如此,主机架构管理程序总是可以利用的。
资源利用
无论对于物理主机还是虚拟机,合理的资源分配都是至关重要的。在部署前,必须了解利用这些硬件要达到什么目的。要进行不间断的高端SQL查询?或者公司计划安装一些应用软件满足一部分用户不定期访问的要求?明白了目标是什么,管理员才能进行合理架设,处理相应工作负荷,更重要的是,伴随基础设施的变化,整个架构也能做出相应调整。
谈到物理硬件,有三个主要的升级办法:
1.硬盘驱动器对于升级硬盘驱动器能显著改善虚拟机性能的说法,大家几乎没有异议。如果现有环境不是把存储网络作为工作负荷的中心,可以考虑用多个高速硬盘来实现升级。对于小型公司,由于不需使用集中存储排列,通常是升级物理硬件内置容量。也就是说,通过更新性能更好的驱动来升级RAID排列,整个运行环境会有很大提高,冗余也会增加。
对于已有存储区域网的较大规模环境,考虑利用现有的技术。存储区域网老化了吗?依附在存储区域网上的驱动是否运行得够快,能够快速和无缝地访问一项工作负荷吗?IT工程师考虑这个问题时,经常会跳过更换存储区域网这个想法,而让他们感到疑惑的是尽管有了新服务器和新虚拟化软件,他们的虚拟基础设施为何运行缓慢。
2.CPU虚拟机装到物理机上时,机载处理器利用率更高了。
从IT工程师的角度看,更快的CPU总能提供更快的处理速度。物理主机有空间允许CPU升级甚至是增加。许多机器配置了开放性CPU槽,以备扩容之需。
3.RAM升级RAM可能是挖掘虚拟主机性能最经济有效的办法。通过在主机上升级内存,能够给每台虚拟机分配更多的RAM。任何一台服务器都能承载比平常更多的RAM。增加RAM之后,工程师就能再次检查虚拟机是如何利用资源的。从而,可以根据实际需要,额外分配内存给特定机器以提高效率。