《云计算与大数据技术应用》

                                                 《第一章》云计算概述

1.1什么是云计算?
1.1.1云计算的定义

云计算是分布式计算的一种,指的是通过网络“云”将巨大的数据计算处理程序分解成无数个小程序,然后,通过多部服务器组成的系统进行处理和分析这些小程序得到结果并返回给用户。云计算早期,简单地说,就是简单的分布式计算,解决任务分发,并进行计算结果的合并。因而,云计算又称为网格计算。通过这项技术,可以在很短的时间内(几秒钟)完成对数以万计的数据的处理,从而达到强大的网络服务。现阶段所说的云服务已经不单单是一种分布式计算,而是分布式计算、效用计算、负载均衡、并行计算、网络存储、热备份冗杂和虚拟化等计算机技术混合演进并跃升的结果。

1.1.2云计算的概念模型
云计算(cloud computing,分布式计算技术的一种,其最基本的概念,是透过网络将庞大的计算处理程序自动分拆成无数个较小的子程序,再交由多部服务器所组成的庞大系统经搜寻、计算分析之后将处理结果回传给用户。透过这项技术,网络服务提供者可以在数秒之内,达成处理数以千万计甚至亿计的信息,达到和“超级计算机”同样强大效能的网络服务。 最简单的云计算技术在网络服务中已经随处可见,例如搜寻引擎、网络信箱等,使用者只要输入简单指令即能得到大量信息。 未来如手机、GPS等行动装置都可以透过云计算技术,发展出更多的应用服务。 进一步的云计算不仅只做资料搜寻、分析的功能,未来如分析DNA结构、基因图谱定序、解析癌症细胞等,都可以透过这项技术轻易达成[7]。 稍早之前的大规模分布式计算技术即为“云计算”的概念起源 云计算时代,可以抛弃U盘等移动设备,只需要进入Google Docs页面,新建文档,编辑内容,然后,直接将文档的URL分享给你的朋友或者上司,他可以直接打开浏览器访问URL。我们再也不用担心因PC硬盘的损坏而发生资料丢失事件。狭义云计算提供资源的网络被称为“云”。“云”中的资源在使用者看来是可以无限扩展的,并且可以随时获取,按需使用,随时扩展,按使用付费。这种特性经常被称为像水电一样使用IT基础设施。 广义云计算这种服务可以是IT和软件、互联网相关的,也可以是任意其他的服务。解释:这种资源池称为“云”。“云”是一些可以自我维护和管理的虚拟计算资源,通常为一些大型服务器集群,包括计算服务器、存储服务器、宽带资源等等。云计算将所有的计算资源集中起来,并由软件实现自动管理,无需人为参与。这使得应用提供者无需为繁琐的细节而烦恼,能够更加专注于自己的业务,有利于创新和降低成本。有人打了个比方:这就好比是从古老的单台发电机模式转向了电厂集中供电的模式。它意味着计算能力也可以作为一种商品进行流通,就像煤气、水电一样,取用方便,费用低廉。最大的不同在于,它是通过互联网进行传输的。云计算是并行计算(Parallel Computing)、分布式计算(Distributed Computing)和网格计算(Grid Computing)的发展,或者说是这些计算机科学概念的商业实现。云计算是虚拟化(Virtualization)、效用计算(Utility Computing)、IaaS(基础设施即服务)、PaaS(平台即服务)、SaaS(软件即服务)等概念混合演进并跃升的结果。总的来说,云计算可以算作是网格计算的一个商业演化版。早在2002年,我国刘鹏就针对传统网格计算思路存在不实用问题,提出计算池的概念:“把分散在各地的高性能计算机用高速网络连接起来,用专门设计的中间件软件有机地粘合在一起,以Web界面接受各地科学工作者提出的计算请求,并将之分配到合适的结点上运行。计算池能大大提高资源的服务质量和利用率,同时避免跨结点划分应用程序所带来的低效性和复杂性,能够在目前条件下达到实用化要求。”如果将文中的“高性能计算机”换成“服务器集群”,将“科学工作者”换成“商业用户”,就与当前的云计算非常接近了。

政府推动云计算产业发展
政府机构应在云计算中扮演的五大角色为:用户、供应商、经纪人、店铺和监管者。一、作为“用户”作为用户,政府机构应“尽其所能”。但首先,政府机构应该确定自己是否真的需要云服务。Di Mato说:“很多情况下,更传统的服务往往更能满足需求。因此,尽管供应商大肆推销云服务,且很多政府机构都在鼓励采用云服务,但必须首先进行个体评估,明确机构内部是否真的存在云服务需求。”云服务为用户提供了越来越高的灵活度,这是一个很重要的机遇。但反过来,政府机构却日渐忽略了“更加传统但更加适合的解决方案”,也没有对供应商未来可能对其产生的“锁定效应”引起足够重视。因此,报告再次呼吁:无论供应商的宣传多么天花乱坠,无论各大机构倡导采用云服务的呼声多么强烈,各政府机构应首先评估是否真的需要云服务。二、作为“供应商”针对第二大角色,提醒政府机构特别是那些大的部门应“发展成熟的云计算模式”。大部分情况下,内部供应商都认为云计算是一种数据中心整合和虚拟化的必然趋势。转向云计算似乎是政府机构决策者可能采取解决方案之一,现在看来,也是一种非常明智的选择。Di Mato呼吁政府机构应思考云服务“是否符合政府的使命和战略目标”,“政府能否提供比市场参与者更加经济高效的服务?”三、作为“经纪人”报告指出,政府机构作为经纪人指的是政府机构成为用户和运营商的中间人,这样一来,“用户就不用再担心如何去寻找能够满足其要求的服务供应商”。政府机构作为经纪人可以为用户提供相对灵活的选择,“使用户避免与供应商直接接触”。作为中间人,政府机构得以维持内部和外部资源的平衡,有效控制灵活度和开支。但报告指出,这将是一件非常复杂的事情。四、作为“店铺”目前,政府机构在云计算中最被大家认同的角色就是店铺。五、作为“监管者”第五大即最后一个角色是监管者。政府作为监管者,能够降低使用云服务的“风险”,并通过“必要的监管职能确保一切(用户和供应商)正常运作。”这个角色的实施可以从两个角度出发:一是通过发表建议或直接“限制”采购过程;二是让供应商从一开始就介入云战略。

1.1.3云计算的特点

1、超大规模

  “云”具有相当的规模,Google云计算已经拥有100多万台服务器,Amazon、IBM、微软、Yahoo等的“云”均拥有几十万台服务器。企业私有云一般拥有数百上千台服务器。“云”能赋予用户前所未有的计算能力。

2、虚拟化

  云计算支持用户在任意位置、使用各种终端获取应用服务。所请求的资源来自“云”,而不是固定的有形的实体。应用在“云”中某处运行,但实际上用户无需了解、也不用担心应用运行的具体位置。只需要一台笔记本或者一个手机,就可以通过网络服务来实现我们需要的一切,甚至包括超级计算这样的任务。

3、高可靠性

  “云”使用了数据多副本容错、计算节点同构可互换等措施来保障服务的高可靠性,使用云计算比使用本地计算机可靠。

4、通用性

  云计算不针对特定的应用,在“云”的支撑下可以构造出千变万化的应用,同一个“云”可以同时支撑不同的应用运行。

5、高可扩展性

  “云”的规模可以动态伸缩,满足应用和用户规模增长的需要。

6、按需服务

  “云”是一个庞大的资源池,你按需购买;云可以像自来水,电,煤气那样计费。

7、极其廉价

  由于“云”的特殊容错措施可以采用极其廉价的节点来构成云,“云”的自动化集中式管理使大量企业无需负担日益高昂的数据中心管理成本,“云”的通用性使资源的利用率较之传统系统大幅提升,因此用户可以充分享受“云”的低成本优势,经常只要花费几百美元、几天时间就能完成以前需要数万美元、数月时间才能完成的任务。

  云计算可以彻底改变人们未来的生活,但同时也要重视环境问题,这样才能真正为人类进步做贡献,而不是简单的技术提升。

8、潜在的危险性

  云计算服务除了提供计算服务外,还必然提供了存储服务。但是云计算服务当前垄断在私人机构(企业)手中,而他们仅仅能够提供商业信用。对于政府机构、商业机构(特别像银行这样持有敏感数据的商业机构)对于选择云计算服务应保持足够的警惕。一旦商业用户大规模使用私人机构提供的云计算服务,无论其技术优势有多强,都不可避免地让这些私人机构以“数据(信息)”的重要性挟制整个社会。对于信息社会而言,“信息”是至关重要的。另一方面,云计算中的数据对于数据所有者以外的其他用户云计算用户是保密的,但是对于提供云计算的商业机构而言确实毫无秘密可言。所有这些潜在的危险,是商业机构和政府机构选择云计算服务、特别是国外机构提供的云计算服务时,不得不考虑的一个重要的前提。

1.2云计算技术的发展背景
随着云计算的不断演变,云计算不再是早期的简易平台,通过互联网云计算能够以最少的管理工作快速进行系统资源配置,以及随时访问更高级别的共享池。云计算的出现,让企业获得成本效益之外,还实现了简化IT管理和维护、内置安全性以及易于部署的模式等。基于这些优势,越来越多的企业开始使用云计算,以期能够帮助企业实现业务目标。未来,企业云用户关心的云计算会有哪些发展?1重新定义服务模式随着云计算的发展,云服务和解决方案将随之增长。软件即服务(SaaS)预计到2020年将以18%的年均复合增长率增长,平台即服务(PaaS)的采用率将在2020年达到56%,2018年基础设施即服务(IaaS)的全球市场规模将达到175亿美元。现阶段云计算是一种业务模式,服务提供商在定制的环境中处理客户的完整基础架构和软件需求。随着企业云服务的采用,云文件共享服务将会增加,而消费者云服务也将会随之增长。在云计算领域,亚马逊领先于微软、IBM、谷歌及其他技术巨头。2022年,亚马逊AWS营收将达到430亿美元。2混合云成优选2018年,云到云连接将不断增长。当前,多个云提供商都开放了平台上的APIs,以连接多个解决方案,API有助于同步多学科和跨功能的流程。通过允许数据和应用程序共享,从而实现公有云和私有云融合的云计算环境被称为混合云。为满足业务需求,未来企业将选择混合云,并进行大量定制,同时保留其内部解决方案。考虑到数据流的控制,内部部署是网络安全性更好的选择,因而未来企业更加钟情于私有云+公有云。3众包数据替代传统云存储传统的云存储不安全、速度慢且成本高,因此2018年将实现Google Drive和DropBox等众包数据存储。企业也正在使用这种类型的存储来生成更多的众包数据。例如,谷歌和亚马逊正在为大数据、数据分析和人工智能等应用提供免费的云存储,以便生成众包数据。4云安全支出剧增云应用越多,云安全性将变得更加脆弱,2017年全球信息安全支出为864亿美元,预计2018年全球信息安全支出将达到930亿美元。在未来,云计算行业将期待更多网络安全公司提出新的云安全措施。5物联网(IoT)和云计算云和物联网(IoT)是不可分割的,因为物联网需要云来运行和执行。物联网是一套完整的管理和集成的服务,允许企业大规模从全球分散的设备连接、管理和摄取物联网数据,对数据进行实时处理和分析,实施操作变更,并根据需要采取行动。2017年12月3日,世界互联网大会上,亚马逊全球AWS公共政策副总裁迈克尔.庞克表示,随着IoT的发展,我们现在进入了一个万物互联的时代,数以万计的产业、行业通过互联网实现互联。现在有更多的IoT连接到云端,因此云计算的使用将和物联网一起不断发展。6实现无服务器云计算的应用优势之一便是无服务器,无服务器应用将为那些专注于网络安全和恶意软件防护的企业提供即时支付型付费模式。触发式日志,数据包捕获分析和使用无服务器基础架构的流量信息将变得更加普遍,中小型企业能够获得与大型企业一样的规模效益和灵活性。云计算是信息技术发展和服务模式创新的集中体现,是信息化发展的重大变革和必然趋势,是信息时代国际竞争的制高点和经济发展新动能的助燃剂。云计算引发了软件开发部署模式的创新,成为承载各类应用的关键基础设施,并为大数据、物联网、人工智能等新兴领域的发展提供基础支撑。据统计,中国云计算市场正以30%左右的增速高速发展。在中国云计算高速发展的趋势下,随着各企业业务不断扩张,对于云计算的需求将越趋于个性化,未来更多的企业会将倾向于定制服务,即为企业量身打造适合于自身发展的云计算方案,这也势必成为未来市场的发展方向。

我国的云计算产业现状
全球云计算市场风起云涌、群雄争霸,中国云计算市场百花齐放、百舸争流!(1)全球云计算市场规模2013 年全球云服务市场约为1317亿美元,年增长率为18%,2014年全球云服务市场规模为1547.9亿美元,较上年同期增长17.5%。据预测,未来几年云服务市场仍将保持15%以上的增长率,2017 年达到2442 亿美元。此外,据《福布斯》网络版报道,Bain Company公布的最新报告显示,到2020年全球云计算市场的规模预计将升至3900亿美元,年复合增长率(CAGR)达到17%。2011-2017年全球云服务市场规模走势图资料来源:Gartner(2)全球云计算市场结构在云计算细分市场中,SaaS 规模仍然最大,IaaS 市场增长最快。SaaS 市场规模是IaaS 和PaaS 市场规模总和的一倍还多;但从年增长率来看则分别为45.2%、28.8%和24.4%,IaaS 和PaaS 的市场规模增速都超过SaaS,预计未来几年这种情况还将延续。据悉,当前来自公共和私有云服务及相关设备的利润达到了2012年时期的4倍,其中向终端客户提供云服务的提供商占据了其中20%的利润。同时期内,基于SaaS的应用市场规模的CAGR为18%,基于IaaS/PaaS应用市场规模的CAGR为27%。全球云计算细分市场格局资料来源:Gartner(3)全球云计算区域分布欧美等发达国家占据了云服务市场的主导地位(75%以上),其中,美国、西欧分别占据了全球50%和23.5%的市场份额;虽然中国市场所占份额仅为4%,但近几年一直呈上升之势(2011 年中国市场占全球3.2%、2012 年占3.7%)。由于云计算市场发展受到国家信息化水平、经济发展水平、ICT 产业发展程度等条件的制约,未来几年全球市场格局不会有显著变化。全球云服务市场区域分布格局资料来源:Gartner目前,《财富》全球50强企业中有48家公司公开宣布了自己的云部署计划,其中多家企业的IT部门已在广泛使用云服务。客户对云服务的需求为:替换或者升级现有的云服务、某些非关键应用,以及创建新的数字业务。数据安全、满足监管合规需求以及供应商绑定,是企业客户向云市场转换过程中最为关注的三大因素。此外,所购买云服务成本和开支的不确定性,数据可移植性、所有权,数据的管控(升级、备份时间等),以及软件的兼容性和可靠性,也不同程度地受到客户关注。(4)中国云计算市场在互联网时代,市场从落地到成熟的时间会越来越短,中国的云计算市场份额的增速也会越来越快。在全球云计算浪潮的席卷下,我们从全球公有云计算龙头亚马逊AWS、国内云计算领导者阿里云的爆发式增长看到,目前国内整体产业正在步入远高于全球市场的快速爆发阶段。国内行业的整体趋势:1.云计算的渗透正在逐步从互联网领域客户,向传统产业的领域渗透2.在国家产业政策的驱动下,各个国家部委、省政府、垂直性的行业协会、大型央企,正在逐步将一类非敏感性的业务系统,搬迁到公有云上,并优选私有云作为整个IT架构转型和业务升级的载体,我们看到过去的一年中,国内几乎所有的省份都启动了区域性的云计算建设项目3.众多传统行业,诸如银行、保险、制造业等均选择云计算作为未来战略转型升级的重要支撑载体,一改过去主要以互联网客户为主的现状从客户变迁的显著趋势来看,云计算产业正在进入广泛的应用渗透,以及产品迭代升级与客户拓展交互推进的阶段,整体行业正在进入业绩逐步兑现的阶段!

云计算前景
从当前云计算的落地应用情况来看,当前云计算的落地应用已经进入到了新的阶段,这个阶段的主要特点有三个,其一是云计算正在从IT(互联网)行业开始向传统行业覆盖;其二是云计算正在成为企业进行网络化、智能化升级的重要支撑;其三是云计算正在全面整合行业资源,从而促进企业创新能力的提升。云计算在落地应用的初期,主要出发点有两个,其一是拥有大量“过剩算力”的互联网企业(以电子商务企业最为突出),希望通过云计算的方式来盘活自身的算力,从而降低运营成本;其二是对于中小企业来说,借助于云计算能够降低网络化升级的成本,可以采用更廉价的方式来拥抱互联网。从这两个出发点来看,云计算早期的关注点主要集中在“廉价算力”上,这使得云计算的模式能够迅速得到认可,也为云计算的后期发展奠定了扎实的用户基础。随着云计算对于大数据、人工智能等技术的支撑作用越发明显,当前云计算已经从早期的IaaS逐渐开始向PaaS和SaaS领域发展,这个过程正在不断提升云计算产品的附加值,而此时的云计算早已经不是“廉价算力”的代名词了,转而成为了企业拥抱工业互联网的重要桥梁。在工业互联网发展的大背景下,云计算的附加值会逐渐提升,而云计算的全面落地也为大数据和人工智能产品的落地,提供了重要的场景支撑。从云计算本身的特点来看,云计算说到底就是一种服务,在云计算落地应用的过程中,云计算的服务边界也在随着技术的迭代而不断扩展,所以当前云计算的想象空间还是非常大的,基于云计算也可以为企业的工业互联网发展之路带来更多的便利。最后,云计算的落地应用本身是一个动态的过程,云计算的全面落地在工业互联网时代会进一步加速。实际上,当前很多中小企业已经越来越离不开云计算了。

1.3经典的云计算基础架构
云计算架构——显示层  这层主要是用于以友好的方式展现用户所需的内容,并会利用到下面中间件层提供的多种服务,主要有五种技术:  HTML:标准的Web页面技术,现在主要以HTML4为主,但是将要推出的HTML5会在很多方面推动Web页面的发展,比如视频和本地存储等方面。  JavaScript:一种用于Web页面的动态语言,通过JavaScript,能够极大地丰富Web页面的功能。  CSS:主要用于控制Web页面的外观,而且能使页面的内容与其表现形式之间进行优雅地分离。  Flash:业界最常用的RIA(Rich Internet Applications)技术,能够在现阶段提供HTML等技术所无法提供的基于Web的富应用,而且在用户体验方面,非常不错。  Silverlight:来自业界巨擎微软的RIA技术,虽然其现在市场占有率稍逊于Flash,但由于其可以使用C#来进行编程,所以对开发者非常友好。  云计算架构——中间层  这层是承上启下的,它在下面的基础设施层所提供资源的基础上提供了多种服务,比如缓存服务和REST服务等,而且这些服务即可用于支撑显示层,也可以直接让用户调用,并主要有五种技术:  REST:通过REST技术,能够非常方便和优雅地将中间件层所支撑的部分服务提供给调用者。  多租户:就是能让一个单独的应用实例可以为多个组织服务,而且保持良好的隔离性和安全性,并且通过这种技术,能有效地降低应用的购置和维护成本。  并行处理:为了处理海量的数据,需要利用庞大的X86集群进行规模巨大的并行处理,Google的MapReduce是这方面的代表之作。  应用服务器:在原有的应用服务器的基础上为云计算做了一定程度的优化,比如用于Google App Engine的Jetty应用服务器。  分布式缓存:通过分布式缓存技术,不仅能有效地降低对后台服务器的压力,而且还能加快相应的反应速度,最著名的分布式缓存例子莫过于Memcached。  云计算架构——基础设施层  这层作用是为给上面的中间件层或者用户准备其所需的计算和存储等资源,主要有四种技术:  虚拟化:也可以理解它为基础设施层的“多租户”,因为通过虚拟化技术,能够在一个物理服务器上生成多个虚拟 机,并且能在这些虚拟机之间能实现全面的隔离,这样不仅能减低服务器的购置成本,而且还能同时降低服务器的运维成本,成熟的X86虚拟化技术有 VMware的ESX和开源的Xen。  分布式存储:为了承载海量的数据,同时也要保证这些数据的可管理性,所以需要一整套分布式的存储系统。  关系型数据库:基本是在原有的关系型数据库的基础上做了扩展和管理等方面的优化,使其在云中更适应。  NoSQL:为了满足一些关系数据库所无法满足的目标,比如支撑海量的数据等,一些公司特地设计一批不是基于关系模型的数据库。云计算架构——管理层  这层是为横向的三层服务的,并给这三层提供多种管理和维护等方面的技术,主要有下面这六个方面:  帐号管理:通过良好的帐号管理技术,能够在安全的条件下方便用户地登录,并方便管理员对帐号的管理。  SLA监控:对各个层次运行的虚拟机,服务和应用等进行性能方面的监控,以使它们都能在满足预先设定的SLA(Service Level Agreement)的情况下运行。  计费管理:也就是对每个用户所消耗的资源等进行统计,来准确地向用户索取费用。  安全管理:对数据,应用和帐号等IT资源采取全面地保护,使其免受犯罪分子和恶意程序的侵害。  负载均衡:通过将流量分发给一个应用或者服务的多个实例来应对突发情况。  运维管理:主要是使运维操作尽可能地专业和自动化,从而降低云计算中心的运维成本。 云计算架构其中有三层是横向的,分别是显示层、中间件层和基础设施层,通过这三层技术能够提供非常丰富的云计算能力和友好的用户界面,云计算架构还有一层是纵向的,称为管理层,是为了更好地管理和维护横向的三层而存在的。

1.4云计算主要服务模式
对于企业来说,可能会需要一套OS系统来解决办公自动化的问题;或者通过使用ERP系统帮助提升管理效率;再者用到定制化的CRM系统助力工作的精准度等等。最初想要实现这些应用,需要企业自己购买服务器、硬件以及开发团队,自从云计算出现以后,想要得到这样一套应用变得简单了,没有专业的团队也能够得到满足自己搭建需求的应用。根据NIST(美国国家标准与技术研究院)的权威定义,云计算的服务模式SPI,即SaaS、PaaS和IaaS。 SaaS软件即服务SaaS系统,英文全称“Software-as-a-Service”,中文全称“软件即服务”。常见的SaaS产品种类包括ERP(企业资源计划)、CRM(客户关系管理)、OA(办公自动化)、EHR(人力资源管理)、SCM(供应链管理)等。传统软件系统基于本地,而云计算系统将本地服务器搬到了云端,通过软件连接互联网使用。主要有以下特点:软件系统的运行不受限于本地物理主机的性能,而是高速运行在云端服务器上;云端服务器24小时开机运行,只要连接互联网便可实现“随时”、“随地”的访问使用;方便随时在线收集用户需求,对SaaS平台进行集中维护更新;基于模块化功能开发,企业可根据不同行业用户需求快速迭代产品。最容易接触到关于SaaS的小程序或者软件,如H5应用、阿里钉钉、腾讯企业微信、云创办公等,这些应用平台上可提供各类SaaS小软件,从OA到ERP,再到CRM等等,可涵盖企业运行所需的几乎所用应用。 PaaS平台即服务PaaS系统,英文全称“Platform-as-a-Service”,中文全称“平台即服务”,也可以称之为“中间件”服务。传统软件离不开本地配置开发环境和服务器等设备,PaaS平台可以提供基础架构,开发者可以在此之上构建新的应用,或者二次开发新的功能,缩短应用的开发周期。主要有以下特点:提供已经开发完成的功能模块“中间件”,缩短开发者开发周期;节省本地开发硬件设备采购与维护费用;基于Web的开发环境,方便不同开发者、工作室跨区域、跨空间协作;PaaS平台可为应用提供实时的管理与监控,开发者可通过具体数值观察应用的运行状态。PaaS能够提供各种开发和分发应用的解决方案,如虚拟服务器和特定的操作系统。能够节省硬件上的费用,也让各类应用的开发更加便捷,让不同工作间的打通变得容易。熟知的PaaS平台就有百度BAE、新浪SAE、阿里Ali、腾讯云、云创办公等等,很多电商平台、视频网站等都可以通过PaaS实现快速部署。IaaS基础设施即服务IaaS系统,英文全称“Infrastructure-as-a-Service”,也可称之为“Hardware-as-a-Service”,中文全称“基础设施即服务”。IaaS服务一般分为三类:公有云(置于Internet上,面向注册、付费用户,核心属性是共享资源服务)、私有云(置于私有环境中,服务于单个客户,对数据、安全性和服务质量的提供最有效控制)、混合云(融合了公有云和私有云,将内部重要数据保存在本地数据中心,同时也可以使用公有云的计算资源)。IaaS提供的场外服务器,存储和网络硬件,可以进行租用,降低成本和办公场地费用,可随时通过这些硬件来运行其应用。熟知的IaaS服务有服务器托管业务,多数的IDC都提供这样的服务,用户自己不想要再采购价格昂贵的服务器和磁盘阵列了,所有的硬件都由IaaS提供,并且还能获得品质更高的网络资源。

1.4.1 IaaS(Infrastructure-as-a-Service)--------基础设施即服务

 基础设施即服务(IaaS)交付给用户的是基本的基础设施资源。用户无需购买,维护硬件设备和相关系统软件,就可以直接在该层上构建自己的平台和应用。基础设施向用户提供虚拟化的计算资源、存储资源、网络资源个安全防护等。这些资源能够根据用户的需求动态的分配。支撑该服务的技术体系主要包括虚拟化技术和相关资源动态管理与调度技术。

代表性的产品:
1.IBM Blue Cloud“蓝云”:蓝云解决方案是业界的第一个,也是在技术上比较领先的企业级云计算解决方案。
2.Amazon EC2:EC2基于著名的开源虚拟化技术Xen,主要提供不同规格的计算资源(虚拟机)为主。提欧完善的API和Web管理界面方便用户使用。
3.Cisco UCS:是一个集成的可扩展多机箱平台。
4.Joyent:基于Open Solaris技术的IaaS服务。
 1.4.2平台即服务(PaaS)

PaaS 是为用户提供应用软件的开发、测试、部署和运行环境的服务。所谓环境,是指支撑使用特定开发工具开发的,应用能够在其上有效运行的软件支撑服务系统平台。支撑该服务的技术体系主要是分布式系统。
代表性产品:
1.Force.com:业界第一个PaaS平台,基于多租户的结构,主要通过提供完善的开发环境等功能来帮助企业和第三方供应商交付的在线应用。
2.Google APP Engine:使用户可以在Google及基础结构上运行自己的网络应用程序的PaaS应用程序。提供整套的开发工具和SDK来加速应用的开发,并提供大量的免费额度拉节省用户的开支。
3.Windows Azure Platform:微软推出的PaaS产品。运行在微软数据中心的服务器和网络基础上,通过公共互联网对外提供服服务。
4.Heroku:部署Ruby On Rails应用的PaaS平台,支持多种编程语言。
2.3 SaaS(Software-as-a-Service)-------软件即服务
1.4.3软件即服务(SaaS)
SaaS 是一种以互联网为载体,以浏览器为交互方式,把服务器端的程序软件传给远程用户来提供软件服务的应用模式。在服务器端,SaaS 提供为用户搭建信息化所需要的所有网络基础设施及软硬件运作平台,负责所有前期的实施,后期的维护等一系列工作;客户只需要根据自己的需要,向SaaS 提供商租贷软件读物,无需购买软硬件、建设机房、招聘IT人员。
代表性产品:
1.Google Apps:中文名为“Google企业应用套件”,提供多个在线办公工具。该套件价格低廉,使用方便。
2.Salesforce CRM:是一款在线客户管理工具,在销售,市场营销、服务和合作伙伴这四个商业领域中提供完善的IT支持,还提供强大的定制和扩展机制。
3.Office Web Apps:是微软开发的完全免费的在线版Office,兼容Firefox,Safari等非IE系列浏览器。为用户提供随时随地的办公。
4.Zoho:是一款在线办公套件,在功能方面,他绝对是最全面的,有邮件、CRM、项目管理、Wiki、在线会议、论坛和人力资源等几十个在线工具供用户选择

.Iaas和Paas之间的比较

PaaS的主要作用是将一个开发和运行平台作为服务提供给用户,而IaaS的主要作用是提供虚拟机或者其他资源作为服务提供给用户。接下来,将在七个方面对PaaS和IaaS进行比较:

开发环境:PaaS基本都会给开发者提供一整套包括IDE在内的开发和测试环境,而IaaS方面用户主要还是沿用之前比较熟悉那套开发环境,但是因为之前那套开发环境在和云的整合方面比较欠缺,所以使用起来不是很方便。
支持的应用:因为IaaS主要是提供虚拟机,而且普通的虚拟机能支持多种操作系统,所以IaaS支持的应用的范围是非常广泛的。但如果要让一个应用能跑在某个PaaS平台不是一件轻松的事,因为不仅需要确保这个应用是基于这个平台所支持的语言,而且也要确保这个应用只能调用这个平台所支持的API,如果这个应用调用了平台所不支持的API,那么就需要对这个应用进行修改。
 开放标准:虽然很多IaaS平台都存在一定的私有功能,但是由于OVF等协议的存在,使得IaaS在跨平台和避免被供应商锁定这两面是稳步前进的。而PaaS平台的情况则不容乐观,因为不论是Google的App Engine,还是Salesforce的Force.com都存在一定的私有API。
可伸缩性:PaaS平台会自动调整资源来帮助运行于其上的应用更好地应对突发流量。而IaaS平台则需要开发人员手动对资源进行调整才能应对。
整合率和经济性: PaaS平台整合率是非常高,比如PaaS的代表Google App Engine能在一台服务器上承载成千上万的应用,而普通的IaaS平台的整合率最多也不会超过100,而且普遍在10左右,使得IaaS的经济性不如PaaS。
计费和监管:因为PaaS平台在计费和监管这两方面不仅达到了IaaS平台所能企及的操作系统层面,比如,CPU和内存的使用量等,而且还能做到应用层面,比如,应用的反应时间(Response Time)或者应用所消耗的事务多少等,这将提高计费和管理的精确性。
学习难度:因为在IaaS上面开发和管理应用和现有的方式比较接近,而PaaS上面开发则有可能需要学一门新的语言或者新的框架,所以IaaS学习难度更低。
未来的PK

在当今云计算环境当中,IaaS是非常主流的,无论是Amazon EC2还是Linode或者Joyent等,都占有一席之地,但是随着Google的App Engine,Salesforce的Force.com还是微软的Windows Azure等PaaS平台的推出,使得PaaS也开始崭露头角。谈到这两者的未来,特别是这两者之间的竞争关系,我个人认为,短期而言,因为IaaS模式在支持的应用和学习难度这两方面的优势,使得IaaS将会在短期之内会成为开发者的首选,但是从长期而言,因为PaaS模式的高整合率所带来经济型使得如果PaaS能解决诸如通用性和支持的应用等方面的挑战,它将会替代IaaS成为开发者的“新宠”。

它们之间的关系主要可以从两个角度进行分析:其一是用户体验角度,从这个角度而言,它们之间关系是独立的,因为它们面对不同类型的用户。其二是技术角度,从这个角度而言,它们并不是简单的继承关系(Saa…)

1.4.4.三种服务模式之间的关系

它们之间的关系主要可以从两个角度进行分析:其一是用户体验角度,从这个角度而言,它们之间关系是独立的,因为它们面对不同类型的用户。其二是技术角度,从这个角度而言,它们并不是简单的继承关系(SaaS基于PaaS,而PaaS基于IaaS),因为首先SaaS可以是基于PaaS或者直接部署于IaaS之上,其次PaaS可以构建于IaaS之上,也可以直接构建在物理资源之上。虚拟化技术
虚拟化技术简介 虚拟化技术的概念11虚拟化bai是指计算元件在虚du拟的基础上zhi而不是真实的基础上运行。虚dao拟zhuan化技术可以扩大硬shu件的容量,简化软件的重新配置过程。CPU的虚拟化技术可以单CPU模拟多CPU并行,允许一个平台同时运行多个操作系统,并且应用程序都可以在相互独立的空间内运行而互不影响,从而显著提高计算机的工作效率。虚拟化技术与多任务以及超线程技术是完全不同的。多任务是指在一个操作系统中多个程序同时并行运行,而在虚拟化技术中,则可以同时运行多个操作系统,而且每一个操作系统中都有多个程序运行,每一个操作系统都运行在一个虚拟的CPU或者是虚拟主机上;而超线程技术只是单CPU模拟双CPU来平衡程序运行性能,这两个模拟出来的CPU是不能分离的,只能协同工作。虚拟化技术也与目前VMware Workstation等同样能达到虚拟效果的软件不同,是一个巨大的技术进步,具体表现在减少软件虚拟机相关开销和支持更广泛的操作系统方面。 虚拟化,原本是指资源的抽象化,也就是单一物理bai资源的多个逻辑表示,或者多个物理资源的单一逻辑表示。具体到服务器虚拟化,就是多个物理资源的单一逻辑表示。另外,存储虚拟化就是这种模式的一个例子。  对不了解虚拟化的终端用户来说,听到上面说“单一物理资源的多个逻辑表示”,往往会认为“虚拟化技术也太抽象了”。可是,如果要看计算机架构的话,虚拟化正是计算机的本质。  想一下,PC同时启动使用邮件和Web浏览器等多个应用,这时候你就会理解虚拟化技术。在这个情况下,操作系统把PC物理资源抽象化了,将多个应用集中到一个物理资源环境下。因为虚拟化hypervisor是运行在操作系统上层的,所以会被认为有些抽象。不过,如果试着从计算机结构来理解的话,也不是那么晦涩。  虚拟化的主要类型:主机型和hypervisor型  虚拟化的类型大致可以分为主机型和hypervisor型。当虚拟化最初应用于PC时的主流类型是主机型。  主机型是将虚拟化软件作为一个应用安装的主机操作系统中。虚拟硬件包括主机操作系统中的虚拟化软件、操作系统和应用。因为是被作为一个应用,所操作系统不是那么快。  主机型虚拟化的问题在于,如果主机操作系统发生故障,就会波及到作为该操作系统一个应用的虚拟化软件。而且,在硬件模拟过程中也会发生诸多问题。  接下来是hypervisor型。hypervisor型是指通过低层级软件让多个操作系统得以共享相同的硬件设备。 虚拟化技术的分类111.网络虚拟化在这里插入图片描述网络虚拟化相对计算、存储虚拟化来说是比较抽象的,以我们在学校书本上学的那点网络知识来理解网络虚拟化可能是不够的。在我们的印象中,网络就是由各种网络设备(如交换机、路由器)相连组成的一个网状结构,世界上的任何两个人都可以通过网络建立起连接。带着这样一种思路去理解网络虚拟化可能会感觉云里雾里——这样一个庞大的网络如何实现虚拟化?其实,网络虚拟化更多关注的是数据中心网络、主机网络这样比较「细粒度」的网络,所谓细粒度,是相对来说的,是深入到某一台物理主机之上的网络结构来谈的。如果把传统的网络看作「宏观网络」的话,那网络虚拟化关注的就是「微观网络」。网络虚拟化的目的,是要节省物理主机的网卡设备资源。从资源这个角度去理解,可能会比较好理解一点。为了完成虚拟机在同主机和跨主机之间的通信,需要借助某种“桥梁”来完成用户态到内核态(Guest 到 Host)的数据传输,这种桥梁的角色就是由虚拟的网络设备来完成,上面介绍了一个第三方的开源方案——OVS,它其实是一个融合了各种虚拟网络设备的集大成者,是一个产品级的解决方案。但 Linux 本身由于虚拟化技术的演进,也集成了一些虚拟网络设备的解决方案,主要有以下几种:(1)TAP/TUN/VETHTAP/TUN 是 Linux 内核实现的一对虚拟网络设备,TAP 工作在二层,TUN 工作在三层。Linux 内核通过 TAP/TUN 设备向绑定该设备的用户空间程序发送数据,反之,用户空间程序也可以像操作物理网络设备那样,向 TAP/TUN 设备发送数据。基于 TAP 驱动,即可实现虚拟机 vNIC 的功能,虚拟机的每个 vNIC 都与一个 TAP 设备相连,vNIC 之于 TAP 就如同 NIC 之于 eth。当一个 TAP 设备被创建时,在 Linux 设备文件目录下会生成一个对应的字符设备文件,用户程序可以像打开一个普通文件一样对这个文件进行读写。比如,当对这个 TAP 文件执行 write 操作时,相当于 TAP 设备收到了数据,并请求内核接受它,内核收到数据后将根据网络配置进行后续处理,处理过程类似于普通物理网卡从外界收到数据。当用户程序执行 read 请求时,相当于向内核查询 TAP 设备是否有数据要发送,有的话则发送,从而完成 TAP 设备的数据发送。TUN 则属于网络中三层的概念,数据收发过程和 TAP 是类似的,只不过它要指定一段 IPv4 地址或 IPv6 地址,并描述其相关的配置信息,其数据处理过程也是类似于普通物理网卡收到三层 IP 报文数据。VETH 设备总是成对出现,一端连着内核协议栈,另一端连着另一个设备,一个设备收到内核发送的数据后,会发送到另一个设备上去,这种设备通常用于容器中两个 namespace 之间的通信。(2)BridgeBridge 也是 Linux 内核实现的一个工作在二层的虚拟网络设备,但不同于 TAP/TUN 这种单端口的设备,Bridge 实现为多端口,本质上是一个虚拟交换机,具备和物理交换机类似的功能。Bridge 可以绑定其他 Linux 网络设备作为从设备,并将这些从设备虚拟化为端口,当一个从设备被绑定到 Bridge 上时,就相当于真实网络中的交换机端口上插入了一根连有终端的网线。如下图所示,Bridge 设备 br0 绑定了实际设备 eth0 和 虚拟设备设备 tap0/tap1,当这些从设备接收到数据时,会发送给 br0 ,br0 会根据 MAC 地址与端口的映射关系进行转发。 Bridge 与 TAP/TUN 的关系 因为 Bridge 工作在二层,所以绑定到它上面的从设备 eth0、tap0、tap1 均不需要设 IP,但是需要为 br0 设置 IP,因为对于上层路由器来说,这些设备位于同一个子网,需要一个统一的 IP 将其加入路由表中。这里有人可能会有疑问,Bridge 不是工作在二层吗,为什么会有 IP 的说法?其实 Bridge 虽然工作在二层,但它只是 Linux 网络设备抽象的一种,能设 IP 也不足为奇。对于实际设备 eth0 来说,本来它是有自己的 IP 的,但是绑定到 br0 之后,其 IP 就生效了,就和 br0 共享一个 IP 网段了,在设路由表的时候,就需要将 br0 设为目标网段的地址。总结传统网络架构到虚拟化的网络架构,可以看作是宏观网络到微观网络的过渡TAP/TUN/VETH、Bridge 这些虚拟的网络设备是 Linux 为了实现网络虚拟化而实现的网络设备模块,很多的云开源项目的网络功能都是基于这些技术做的,比如 Neutron、Docker network 等。OVS 是一个开源的成熟的产品级分布式虚拟交换机,基于 SDN 的思想,被大量应用在生产环境中。2.储存虚拟化存储虚拟化是指通过在存储设备上加入一个逻辑层,管理员通过逻辑层访问或者调整存储资源,提高存储利用率。这样便于集中的存储设备以及提供更好的性能和易用性。存储虚拟化包括基于主机的存储虚拟化方式、基于存储设备的虚拟化方式以及基于网络的存储虚拟化方式。基于主机的虚拟存储依赖于代理或管理软件,通过在一个或多个主机上进行安装和部署,来实现存储虚拟化的控制和管理。这种方法的可扩充性较差,实际运行的性能不是很好。由于这种方法要求在主机上安装控制软件,因此一个主机的故障可能影响整个SAN系统中数据的完整性。基于主机的虚拟化实现起来比较容易,设备成本最低。基于存储设备的存储虚拟化是在通过第三方的虚拟软件,基于存储的虚拟化通常只能提供一种不完全的存储虚拟化解决方案。这种技术主要用在同一存储设备内部,进行数据保护和数据迁移。优势在于与主机无关,不占用主机资源,数据管理功能丰富。容易和某个特定存储供应商的设备相协调,所以更容易管理。在这里插入图片描述基于网络的虚拟化方法是在网络设备之间实现存储虚拟化功能:1.基于互联设备的虚拟化基于互联设备的虚拟化方法能够在专用服务器上运行,使用标准操作系统,例如Windows、Linux或供应商提供的操作系统。这种方法具有基于主机方法的诸多优势——易使用、设备便宜。但是,基于设备的方法也有一些不足,机的故障或不适当的主机配置都可能导致访问到不被保护的数据。2. 基于路由器的虚拟化基于路由器的方法是在路由器固件上实现存储虚拟化功能。在此方法中,路由器被放置于每个主机到存储网络的数据通道中,用来截取网络中任何一个从主机到存储系统的命令。由于不依赖于在每个主机上运行的代理服务器,这种方法比基于主机或基于设备的方法具有更好的安全性。当连接主机到存储网络的路由器出现故障时,仍然可能导致主机上的数据不能被访问。但是只有联结于故障路由器的主机才会受到影响,其他主机仍然可以通过其他路由器访问存储系统。路由器的冗余可以支持动态多路径,这也为上述故障问题提供了一个解决方法。基于网络的存储虚拟化是通过在存储区域网(SAN)中添加虚拟化引擎实现的。主要用于异构存储系统的整合和统一数据管理。它的优势是:第一,与主机无关,不占用主机资源;第二,能够支持异构主机、异构存储设备;第三,能使不同存储设备的数据管理功能统一;第四,可以构建统一管理平台,可扩展性好。但也存在缺点:第一,部分厂商数据管理功能弱,难以达到虚拟化统一数据管理的目的;第二,部分厂商产品成熟度较低,仍然存在和不同存储和主机的兼容性问题。3.服务器虚拟化虚拟化是一种方法,本质上讲是指从逻辑角度而不是物理角度来对资源进行配置,是从单一的逻辑角度来看待不同的物理资源的方法。以此出发,虚拟化是一种逻辑角度出发的资源配置技术,是物理实际的逻辑抽象。比如说,当前只有一台计算机,通过虚拟技术,在用户看来,可以多台,每台都有其各自的CPU、内存、硬盘等物理资源。对于用户,虚拟化技术实现了软件跟硬件分离,用户不需要考虑后台的具体硬件实现,而只需在虚拟层环境上运行自己的系统和软件。而这些系统和软件在运行时,也似乎跟后台的物理平台无关。服务器虚拟化技术是将服务器物理资源抽象成逻辑资源,让一台服务器变成几台甚至上百台相互隔离的虚拟服务器,我们不再受限于物理上的界限,而是让CPU、内存、磁盘、I/0等硬件变成可以动态管理的“资源池”,从而提高资源的利用率,简化系统管理,实现服务器资源整合,让IT对业务的变化更具适应力。虚拟化的概念在20世纪60年代首次出现,利用它可以对属于稀有而昂贵资源的大型机硬件进行分区。随着时间的推移,微型计算机和PC可提供更有效、更经济的方法来分配处理能力,因此到20世纪80年代,虚拟技术已不再广泛使用。但是到了20世纪90年代,研究人员开始探索如何利用虚拟化解决与廉价硬件激增相关的一些问题,例如,利用率不足、管理成本不断攀升和易受攻击等。虚拟化技术处于时代前沿,可以帮助企业升级和管理他们在世界各地的IT基础架构并确保其安全。虚拟化技术可以扩大硬件的容量,简化软件的重新配置过程。CPU的虚拟化技术可以单CPU模拟多CPU并行,允许一个平台同时运行多个操作系统,并且应用程序都可以在相互独立的空间内运行而互不影响,从而显著提高计算机的工作效率。所有的IT设备,不管是PC、服务器还是存储,都有一个共同点:它们被设计用来完成一组特定的指令。这些指令组成一个指令集。对于虚拟技术而言,“虚拟”实际上就是指的虚拟这些指令集。虚拟机有许多不同的类型,但是它们有一个共同的主题就是模拟一个指令集的概念。每个虚拟机都有一个用户可以访问的指令集。虚拟机把这些虚拟指令“映射”到计算机的实际指令集。硬分区、软分区、逻辑分区、Solaris Container、VMware、Ken、微软Hyper—V这些虚拟技术都是运用的这个原理,只是虚拟指令集所处的层次位置不同。无论哪一种虚拟技术,都要求需要实施虚拟化的物理服务器能够良好地支持这些的虚拟化指令集。裸金属架构裸金属服务器再度流行,目前阿里云、华为云、腾讯云等各大厂商都推出了自己的裸金属服务器,那么到底什么是裸金属服务器?裸金属服务器的架构原理是什么?什么是裸金属服务器?裸金属服务器(Bare Metal Server)类似云上的专属物理服务器,在拥有弹性灵活的基础上,具有高性能的计算能力。计算性能与传统物理机无差别,具有安全物理隔离的特点。裸金属服务器再度流行?目前云计算各大厂商都推出了自己的裸金属服务器,例如:阿里云的弹性裸金属服务器,腾讯云的黑石服务器,华为的BMS裸金属服务器,为何裸金属服务器再度流行?主要是由于以下几点原因:物理机才有安全感部分企业,尤其是大型企业,对于将私有数据中心迁移到公有云有些许担忧,裸金属服务器可以给用户物理机一样的安全感。性能要求较高如果用户的应用程序对性能要求敏感,这时候选择裸金属服务器是最佳的选择。安全监管某些应用场景对数据安全和监管要求非常严格,虚拟机无法满足用户要求,需要独占物理机,显然裸金属服务器是比较合适的选择。传统托管的弊端用户选择传统的服务器托管模式需要耗费更多时间去采购设备、部署等,这个流程比较复杂,周期也比较长,无法及时响应业务变化,这时候裸金属服务器比较合适。虚拟机与物理机相结合场景用户上云可能会存在多种形态的计算资源,某些情况下虚拟机无法满足复杂的应用场景,这时候可能就需要需要虚拟机和物理机相结合的场景,裸金属服务器应运而生。寄居架构全虚拟化如果一个基于硬件运行(native)的OS不需要修改任何代码就可以直接跑在VMM上,也就是guest OS根本感知不到自己运行在一个虚拟化环境中(可以说VMM是骗术高明的),这种就被称为“完全虚拟化”。在这种模式下,VMM需要正确处理guest所有可能的指令。最简单直接的方法就是,VMM对guest运行过程中的每一条指令都进行解释和执行,模拟出这条指令执行的效果,这种方法既适用于和VMM相同体系结构的guest,也能用于模拟和VMM不同体系结构的guest(比如物理CPU是x86的,而guest是基于ARM的),其缺点也很明显,就是性能太差。有一些指令是要操作特权资源的,比如修改虚拟机的运行模式或者下面物理机的状态,读写时钟或者中断寄存器,这些指令被称为敏感指令,确实不适合由guest直接来控制。然而其他的一些非敏感指令,是完全可以在物理CPU上直接执行并返回结果给guest的,VMM只需要截获并模拟guest对敏感指令的执行和对特权资源的访问就可以了,以intel的VT-x和AMD的AMD-V为代表的硬件辅助虚拟化技术,就可以帮助VMM高效地识别和截获这些敏感指令。在这里插入图片描述半虚拟化半虚拟化:半虚拟化技术是后来才出现的技术,也叫做准虚拟化技术,现在比较热门,它就是在全虚拟化的基础上,把客户操作系统进行了修改,增加了一个专门的API,这个API可以将客户操作系统发出的指令进行最优化,即不需要VMM耗费一定的资源进行翻译操作。硬件辅助虚拟化你的CPU只有4个线程,不还是可以同时运行一大堆应用么。比如一边看网页,一边听音乐,一边敲代码,一边编译,等。这在本质上和overcommit你的CPU来跑虚拟机没什么区别,就是个时分复用,由host OS的scheduler来调度各个线程/vCPU。因为你大多数的vCPU都是处于idle的状态,于是它们本质上并不会占用你的物理线程。你可以试试让所有的虚拟机同时运行CPU bound的application来感受一下。操作系统虚拟化操作系统虚拟化目前还是处于非主流状态.2006年11月8日,权威研究机构Gartner发布了一份服务器技术发展的研究报告,其中有一个不同寻常的预测:到2010年,共享的操作系统虚拟化将成为主流虚拟化技术.文中提到的服务器操作系统虚拟化厂商包括:Sun Solaris Containers,SWsoft Virtuozzo,以及IBM z/OS和HP.服务虚拟化桌面虚拟化应用虚拟化虚拟化技术的优势和劣势 虚拟化技术的优势11虚拟化技术的bai优势:  ①更高的资源利用率——虚拟可支持实现物理资源和资源池的动态共享,提高资源利用率,特别是针对那些平均需求远低于需要为其提供专用资源的不同负载。  ②降低管理成本——虚拟可通过以下途径提高工作人员的效率:减少必须进行管理的物理资源的数量;隐藏物理资源的部分复杂性;通过实现自动化、获得更好的信息和实现中央管理来简化公共管理任务;实现负载管理自动化。另外,虚拟还可以支持在多个平台上使用公共的工具。  ③提高使用灵活性——通过虚拟可实现动态的资源部署和重配置,满足不断变化的业务需求。  ④提高安全性——虚拟可实现较简单的共享机制无法实现的隔离和划分,这些特性可实现对数据和服务进行可控和安全的访问。  ⑤更高的可用性——虚拟可在不影响用户的情况下对物理资源进行删除、升级或改变。  ⑥更高的可扩展性——根据不同的产品,资源分区和汇聚可支持实现比个体物理资源小得多或大得多的虚拟资源,这意味着您可以在不改变物理资源配置的情况下进行规模调整。  ⑦互操作性和投资保护——虚拟资源可提供底层物理资源无法提供的与各种接口和协议的兼容性。  ⑧改进资源供应——与个体物理资源单位相比,虚拟能够以更小的单位进行资源分配。  虚‎‎拟所能提供的优势取决于客户的目标、所选择的特殊虚拟技术以及现有的IT基础架构。 并‎‎非所有的客户都能够从实现某一特殊虚拟化解决方案中获得同样的利益。 现在,即使是使用虚拟化进行简单的服务器整合,客户们也经常可以在某种程度上获得以下很多利益: 更高的资源利用率——虚拟可支持实现物理资源和资源池的动态共享,提高资源利用率,特别是针对那些平均需求远低于需要为其提供专用资源的不同负载。 n 降低管理成本——虚拟可通过以下途径提高工作人员的效率:减少必须进行管理的物理资源的数量; 隐藏物理资源的部分复杂性; 通过实现自动化、获得更好的信息和实现中央管理来简化公共管理任务; 实现负载管理自动化。 另外,虚拟还可以支持在多个平台上使用公共的工具。 n 提高使用灵活性——通过虚拟可实现动态的资源部署和重配置,满足不断变化的业务需求。 n 提高安全性——虚拟可实现较简单的共享机制无法实现的隔离和划分,这些特性可实现对数据和服务进行可控和安全的访问。 n 更高的可用性——虚拟可在不影响用户的情况下对物理资源进行删除、升级或改变。 n 更高的可扩展性——根据不同的产品,资源分区和汇聚可支持实现比个体物理资源小得多或大得多的虚拟资源,这意味着您可以在不改变物理资源配置的情况下进行规模调整。 n 互操作性和投资保护——虚拟资源可提供底层物理资源无法提供的与各种接口和协议的兼容性。 n 改进资源供应——与个体物理资源单位相比,虚拟能够以更小的单位进行资源分配。 虚拟化技术的劣势111、缺乏虚拟bai化的总体规划在部署虚拟化之前缺乏总体规划是当前虚拟化存在的最大陷阱。例如,部分用户只为提高部分应用中的服务器资源利用效率,缺乏对服务器、负载、应用和业务需求的全面研究和规划,等到应用了虚拟化软件之后,才认识到虚拟化需要针对不同的工作负载进行不同的考虑,并对不同的负载采用不同的方案,随之还会涉及虚拟应用的整合比等问题。还有很多用户对TCO研究不足,甚至在上虚拟机之前根本未考虑到还需在硬件、基础架构方面作出更多的深入分析和优化的投入。没有前期规划,会给虚拟化应用带来极大的风险。2、缺乏虚拟化的系统管理很多用户对虚拟化系统的管理没有充分认知,在部署后也没有重视并实施具体的管理方法,这很可能会导致虚拟环境产生性能问题,并给IT人员带来无尽的新的头疼问题。例如,在容量、性能、配置或自动化部署和管理等方面,虚拟化必然会成为一系列新问题的导火索。轻视虚拟化应用中的系统管理的复杂程度,造成系统管理不到位,将是虚拟化应用中致命的问题。3、虚拟机负载过重虚拟化可以对资源进行动态配置,从而处理更多,或者更少的负载,这种作法似乎可以解决虚拟设施可能负载过重的问题。但这并不意味着虚拟服务器就是永远压不垮的。虚拟技术有其自己的限制,在基础设施中添加其无法应付的太多虚拟机会适得其反。很多用户在配置虚拟机时对物理机的承受能力没有进行深入分析。4、缺少测试环节虚拟化是实现快速资源服务的途径,但这并不意味着IT部门就可以忽视虚拟机实施前和向虚拟基础设施分配应用之前的容量规划和测试。很多企业用户在应用了动态虚拟机之后才意识到没有测试I/O、占用率等其他问题,就匆匆将新的应用或服务器搬进了虚拟环境。这往往会带来很大的问题。5、没有持续优化在虚拟化中,大量的需求都是动态的。这也意味着企业在部署虚拟化的相关解决方案之后需要进行持续地管理与优化。很多用户在这个方面做得非常不够。企业的IT主管必须从一开始就做好虚拟机生命周期管理规划,并同时配备相关虚拟化管理制。在这里插入图片描述有诸多优点自然也伴随着不足之处,当然并不是每一个应用程序可以虚拟化。有些应用程序需要直接调用硬件,必须在共享的内存空间中运行,或者需要一个只与特定的设备兼容的专用的设备驱动程序。前期高额的费用虽然从长远来看,虚拟化技术是有经济效益的。当然考虑到更长久,我们不得不在硬件上投入更多的资金。从长远来看,肯定会节省开支,但是现实成本还是挺高的。降低硬件利用率这点似乎和上面所说的优点矛盾了,其实只是角度不同而已。虚拟化必然需要占用一部分资源(CPU/内存/硬盘),一个可以发挥出100%性能的物理机,加上虚拟化以后,可能只能发挥出80%的性能,所以又说它会降低资源的利用率。因此某些极度吃资源的应用可能并不适用于虚拟化的环境。更大的错误影响面在常规配置下,虚拟机存储于本地物理机硬盘上。真实物理机down机,上面的虚拟机将全部不可用。另外物理机硬盘损坏,一般可以恢复出绝大部分文件,但碰巧坏的是虚拟机镜像文件,结果虚拟机里面的文件可能全部损坏。实施配置复杂,管理复杂通常的IT管理员并不能很好的排查并解决虚拟化使用过程中的问题,例如经常碰到的VM不能启动或者卡死,没有真实物理机那么好解决。一定的限制性使用虚拟化技术的一个主要缺点是,它涉及到各种限制。并非所有的服务器和应用程序虚拟化是友好的,这意味着你的企业的IT基础设施的某些方面可能与虚拟化解决方案兼容。为此,应该考虑的是,仍然有不完全支持虚拟化环境的供应商。安全性虽说虚拟化技术在安全上已经很不错了,但是虚拟化技术自身也存在着一定的安全隐患。虚拟化过程的目的是分离虚拟化的资源,但是仍然有一些情况下,服务器意外地对其他不应该看到它们的人可见。虚拟化技术与云计算虚拟化是一种将功能与硬件分离的技术,而云则建立在这种分离技术之上。由于两者的核心理念都是从抽象资源中创建可用的环境,所以很容易被混为一谈。单纯地从基础架构即服务(IaaS)的角度来理解二者的区别最为简单。稳定的操作系统(如Linux®)是云计算的基础。它可帮助用户实现公共、私有和混合环境之间的独立性。如果您已经设置好相应的内部网和/或互联网访问权限,则可通过虚拟化来创建云。借助一个名为 “Hypervisor”(虚拟机监控程序)的软件,可以监控物理硬件,并对机器中各项资源进行抽象。这些资源可以是原始处理能力、存储或基于云的应用,这些应用包含部署所需的所有运行时代码和资源。如果就此止步,那么您实施的就是虚拟化,而不是云计算。只有当虚拟资源被分配至中央池中,才能被称为“云”;这些云还需通过管理和自动化软件进行编排,才能被视为“云计算”。云具备以下额外优势:自助服务访问权限、自动化基础架构扩展和动态资源池——这些是它与传统虚拟化的最大区别。具体比较虚拟化的主要功能是把单个资源抽象成多个给用户使用,而云计算则是帮助不同部门(通过私有云)或公司(通过公有云)访问一个自动置备的资源池。虚拟化 借助虚拟化技术,用户能以单个物理硬件系统为基础创建多个模拟环境或专用资源。名为“虚拟机监控程序”的软件可直接连接到硬件,从而将一个系统划分为不同的、单独安全环境,即虚拟机(VM)。虚拟机监控程序能够将计算机资源与硬件分离并适当分配资源,而虚拟机则依赖这些功能运行。云计算 云计算则由多种规则和方法组合而成,可以跨任何网络向用户按需提供计算、网络和存储基础架构资源、服务、平台和应用。这些基础架构资源、服务和应用来源于云。 简单来讲,云就是一系列管理及自动化软件编排而成的虚拟资源池,旨在帮助用户通过支持自动扩展和动态资源分配的自助服务门户,按需对这些资源进行访问。如何从虚拟化转换成云计算?如果已经有虚拟基础架构,您可以将虚拟资源集中在一起,使用管理和自动化软件对其进行编排,然后为用户创建自助服务门户,以此来创建云服务。但是,如果您受到供应商的企业许可协议的约束,则可能会限制您投资云、容器和自动化系统等现代技术,那么实现从虚拟化向云计算的转换就不是那么简单了。在这里插入图片描述虚拟化技术原理CPU虚拟化一个KVM(kernel-based virtual machine)虚拟机在宿主机上就是一个 qemu-kvm进程,与其他Linux进程一样被调用。 虚拟机的每个虚拟CPU则对应 qemu-kvm进程中的一个进程。 因此,虚拟CPU可以超过物理CPU的数量,叫CPU超配。内存虚拟化KVM通过内存虚拟化共享物理系统内存,动态分配给虚拟机。image为了在一台机器上运行多个虚拟机,KVM需要实现VA(虚拟内存) --> PA(物理内存) --> MA(机器内存)的转换,其中虚拟机OS控制VA->PA的转换,KVM负责PA->MA的映射。存储虚拟化KVM的虚拟化通过存储池(Storage Pool)和卷(Volume)实现。 存储池是宿主机可见的一片存储空间,,可以分为多种类型。 卷是存储池的一块空间,卷在虚拟机眼中就是一块硬盘。 不同类型的存储池:目录类型文件目录是最常见的存储池。 目录是一个存储池,默认是 /var/lib/libvirt/images/ 目录里的一个文件就是一个卷。使用文件做卷的优点:存储方便移植性好可复制可远程访问KVM支持多种卷格式:raw: 默认格式,镜像什么格式,卷就是什么格式qcow2: cow即写时复制(copy on write),节省空间,支持AES加密。vmdk:是VMWare 的虚拟磁盘格式,VM虚拟机可以直接在KVM上运行vdi: 是VirtualBox的虚拟磁盘格式逻辑卷管理(Logical Volume Manager)类型宿主机上的VG(Volume Group)中的LV(Logical Volume)作为虚拟磁盘分配给虚拟机使用,只能作为数据盘,不能作为启动盘,因为它没有MBR引导记录。 这种情形,主机的VG就是存储池,LV就是卷。其他类型KVM还支持 iSCSI, Ceph等多种类型的存储池。网络虚拟化基本概念假设宿主机有1块物理网卡en0, 运行着一个虚拟机VM1。那问题是如何让VM1访问外网呢? a):将物理网卡直接分配给虚拟机,但这样会导致宿主机和其他的虚拟机没有网络连接了。 b):给虚拟机分配一个虚拟网卡vnet0, 通过Linux Bridge br0 将 en0和vnet0连接起来。这个是实际采用的方案。Linux Bridge可以看做是物理接口和虚拟接口的转发器。如果添加虚拟机VM2,自然也给它分配虚拟网卡vet0, 这两块虚拟网卡都通过 br0 和en0通信,并且虚拟机之前是可以直接通信的。因此br0就充当了两台虚拟机的出口网关。VLAN没有VLAN之前,连在同一交换机上的主机共享广播域,独占冲突域,相互之间可以直接通信。 VLAN 能够将一个交换机的端口划分为若干个组, 使得连接在同一组中端口的主机位于同一逻辑网络中,不同VLAN间通信需要经过三层路由。VLAN是二层上的隔离,隔离广播指的是二层以太网广播帧,和三层的IP广播报文区别开来。VLAN用VLAN ID 唯一标示组,范围是 [1, 4096]。 支持VLAN的交换机因而具有两种端口:access端口和trunk端口。 access口隶属某一个组,只能把access口划分给一个VLAN组,没有显式指定,默认在0号组。 trunk口允许不同的VLAN帧通过,通常是连接两个交换机的端口模式。imageeth0是宿主机的物理网卡,eth0.10是与它连接的子设备。eth0.10就是VLAN设备,vlan id 是10。eth0.10挂载在brvlan10的Linux Bridge上, 虚拟机VM1的虚拟网卡vnet0也挂载在 brvlan10上。如此一来,vnet0, brvlan10 和 eth0.10 都接在VLAN10 的Access口上。而eth0充当trunk口。如果再增加一个VLAN2image那么VM2的三个虚拟接口都是接在VLAN 20 上的。对于新创建的虚拟机,只要为它创建一个VLAN组,并将其虚拟网卡放到这个组中,就能共享宿主机的物理网卡了。还有,一个物理网卡可以为多个虚拟网卡服务,而一个虚拟网卡则只能对应于一块物理网卡。即一对多关系。Linux Bridge + VLAN = 虚拟交换机对LVM的网络虚拟化总结:物理交换机存在多个VLAN, 每个VLAN拥有多个端口。同一VLAN的主机可以互相通信,不同VLAN端口之间相互隔离。因此交换机包含两层功能:交换和隔离。Linux的VLAN设备实现的是隔离,但没有交换功能。一个VLAN母设备(如eth0)不能拥有两个相同VLAN id的子设备。Linux Bridge专门实现交换功能。将同一VLAN的子设备都挂载到一个Bridge上,设备(也就是两台虚拟机)之间可以交换数据。什么是虚拟化?云计算的核心技术之一就是虚拟化技术。所谓虚拟化,是指通过虚拟化技术将一台计算机虚拟为多台逻辑计算机。在一台计算机上同时运行多个逻辑计算机,每个逻辑计算机可运行不同的操作系统,并且应用程序都可以在相互独立的空间内运行而互不影响,从而显著提高计算机的工作效率。虚拟化的核心软件VMM,是一种运行在物理服务器和操作系统之间的中间层软件。VMM是一种在虚拟环境中的“元”操作系统。他们可以访问服务器上包括CPU、内存、磁盘、网卡在内的所有物理设备。VMM不但协调着这些硬件资源的访问,也同时在各个虚拟机之间施加防护。当服务器启动并执行VMM时,它会加载所有虚拟机客户端的操作系统同时会分配给每一台虚拟机适量的内存,CPU,网络和磁盘。虚拟化方式虚拟化技术有很多实现方式,比如根据虚拟化的程度和级别,有软件虚拟化和硬件虚拟化,全虚拟化和半虚拟化。软件虚拟化:顾名思义,就是采用纯软件的方法在在现有的物理平台上实现物理平台访问的截获和模拟,该物理平台往往不支持硬件虚拟化。硬件虚拟化:简单来说,就是物理平台本身提供了对特殊指令的截获和重定向的硬件支持,新的硬件会提供额外的资源来帮助软件实现对关键硬件资源的虚拟化,从而提升性能。全虚拟化:完全虚拟化技术又叫硬件辅助虚拟化技术,最初所使用的虚拟化技术就是全虚拟化(Full Virtualization)技术,它在虚拟机(VM)和硬件之间加了一个软件层Hypervisor,或者叫做虚拟机管理程序或虚拟机监视器(VMM)。半虚拟化:半虚拟化技术是后来才出现的技术,也叫做准虚拟化技术,现在比较热门,它就是在全虚拟化的基础上,把客户操作系统进行了修改,增加了一个专门的API,这个API可以将客户操作系统发出的指令进行最优化,即不需要VMM耗费一定的资源进行翻译操作。虚拟机技术原理虚拟机其实就是一款模拟电脑硬件的软件。比如说你的电脑,在没有装windows系统或者其他操作系统之前,它本身是一个由硬件组装的电脑,一般称为裸机。而虚拟机就是模拟电脑硬件的一款软件。记住,虚拟机是一款软件。你装了虚拟机之后可以相当于你多了一台裸机。然后再在虚拟机里装操作系统,就相当于多了一台电脑。注:简洁点,虚拟机的原理就是模拟硬件的。1、虚拟机(英文全称:Virtual Machine)是指通过软件模拟的具有完整硬件系统功能的、运行在一个完全隔离环境中的完整计算机系统,目前流行的虚拟机软件有VMware(VMWare ACE)、Virtual Box和Virtual PC,它们都能在Windows系统上虚拟出多个计算机,每个虚拟计算机可以独立运行,可以安装各种软件与应用等。  2、虚拟机在现实中的作用还是相当大的,比如最简单我们电脑中没有光驱,如果要安装系统就可以使用虚拟机来安装系统,虚拟机内部拥有虚拟光驱,支持直接打开系统镜像文件安装系统,另外虚拟机技术在游戏爱好者朋友眼中也相当实用,比如一般一台电脑很多游戏不支持同时多开,但我们可以在电脑中多创建几个虚拟机,那么在虚拟机系统中即可单独再运行程序了,这样即可实现一台电脑同时多开同一游戏了。  3、其实虚拟机在企业中应用非常广,由于服务器通常配置很高,因为很多服务器网络商为了满足中小站长需求,通常将一台服务器划分出多个虚拟机服务器,这样每个网站即可分配独立服务器资源一部分,并且互相不影响且可以配独立IP地址,大大解决了中小企业使用单独服务器费用过高的问题,目前购买的VPS服务器则均为采用该技术,做过网站的朋友初期用到的虚拟空间也是该原理。CPU虚拟化原理cpu的虚拟化技术:CPU的虚拟化技术可以单CPU模拟多CPU并行,允许一个平台同时运行多个操作系统,并且应用程序都可以在相互独立的空间内运行而互不影响,从而显著提高计算机的工作效率;虚拟化技术与多任务以及超线程技术是完全不同的。多任务是指在一个操作系统中多个程序同时并行运行,而在虚拟化技术中,则可以同时运行多个操作系统,而且每一个操作系统中都有多个程序运行,每一个操作系统都运行在一个虚拟的CPU或者是虚拟主机上;而超线程技术只是单CPU模拟双CPU来平衡程序运行性能,这两个模拟出来的CPU是不能分离的,只能协同工作;虚拟化技术也与目前VMware Workstation等同样能达到虚拟效果的软件不同,是一个巨大的技术进步,具体表现在减少软件虚拟机相关开销和支持更广泛的操作系统方面;纯软件虚拟化解决方案存在很多限制。“客户”操作系统很多情况下是通过VMM(Virtual Machine Monitor,虚拟机监视器)来与硬件进行通信,由VMM来决定其对系统上所有虚拟机的访问。(注意,大多数处理器和内存访问独立于VMM,只在发生特定事件时才会涉及VMM,如页面错误。)在纯软件虚拟化解决方案中,VMM在软件套件中的位置是传统意义上操作系统所处的位置,而操作系统的位置是传统意义上应用程序所处的位置。这一额外的通信层需要进行二进制转换,以通过提供到物理资源(如处理器、内存、存储、显卡和网卡等)的接口,模拟硬件环境。这种转换必然会增加系统的复杂性。此外,客户操作系统的支持受到虚拟机环境的能力限制,这会阻碍特定技术的部署,如64位客户操作系统。在纯软件解决方案中,软件堆栈增加的复杂性意味着,这些环境难于管理,因而会加大确保系统可靠性和安全性的困难;而CPU的虚拟化技术是一种硬件方案,支持虚拟技术的CPU带有特别优化过的指令集来控制虚拟过程,通过这些指令集,VMM会很容易提高性能,相比软件的虚拟实现方式会很大程度上提高性能。虚拟化技术可提供基于芯片的功能,借助兼容VMM软件能够改进纯软件解决方案。由于虚拟化硬件可提供全新的架构,支持操作系统直接在上面运行,从而无需进行二进制转换,减少了相关的性能开销,极大简化了VMM设计,进而使VMM能够按通用标准进行编写,性能更加强大。另外,在纯软件VMM中,目前缺少对64位客户操作系统的支持,而随着64位处理器的不断普及,这一严重缺点也日益突出。而CPU的虚拟化技术除支持广泛的传统操作系统之外,还支持64位客户操作系统;两大CPU巨头Intel和AMD都想方设法在虚拟化领域中占得先机,但是AMD的虚拟化技术在时间上要比Intel落后几个月。Intel自2005年末开始便在其处理器产品线中推广应用Intel Virtualization Technology(Intel VT)虚拟化技术。目前,Intel已经发布了具有Intel VT虚拟化技术的一系列处理器产品,包括桌面平台的Pentium 4 6X2系列、Pentium D 9X0系列和Pentium EE 9XX系列。事实上,不同类型的虚拟化技术是从不同的地方开始引导虚拟机系统的:从模拟的 BIOS 开始引导的,支持 MBR、EFI、PXE 等启动方式,如 QEMU、VMWare;从内核开始引导的,虚拟机镜像内不包含内核,如 KVM、Xen;从 init 进程开始引导的,虚拟机是一个与主机共享内核的容器,会按照操作系统的引导过程启动各种系统服务,如 LXC、OpenVZ;只运行一个特定的应用程序或服务的,也是基于容器,如 Docker。/dev/kvm提供的操作包括:• 创建一个新的虚拟机• 向一个虚拟机中分配内存• 读写虚拟cpu寄存器• 向一个虚拟cpu中注入中断• 运行一个虚拟cpu我们在前面的文章中提到了虚拟化技术的大致分类情况,即分为全虚拟化、半虚拟化和硬件辅助虚拟化3大类。而我们虚拟化技术最主要的虚拟主体就是我们的硬件CPU、内存和IO,那么我们的CPU在全虚拟化模式下如何工作,在半虚拟化下如何工作,在硬件辅助虚拟化模式下如何工作?或着说细分下来,我们又可以分为:CPU的全虚拟化技术、半虚拟化技术和硬件辅助虚拟化技术,内存的全虚拟化技术、半虚拟化技术和硬件辅助虚拟化技术IO设备的全虚拟化技术、半虚拟化技术和硬件辅助虚拟化技术。本次我们就来说说CPU的全虚拟化技术、半虚拟化技术和硬件辅助虚拟化技术。不支持硬件辅助虚拟化技术的X86架构下的CPU有4个特权级(ring0~ring3),操作系统是处于最高级别的ring0,应用程序处于最低级别的ring3。内存虚拟化原理虚拟机管理程序 (HV) 通过虚拟真实的物理内存, 以便在虚拟机中运行的未经修改的操作系统 (如 linux 或 android),客户操作系统可以管理自己的连续物理内存的视图。虚拟机管理程序使用虚拟处理器标识符 (VPID) 和扩展页面表 (EPT) 来把客户物理地址转换为实际主机物理地址。虚拟机管理程序启用了EPT和 VPID 硬件虚拟化功能, 为操作系统和客户系统建立了EPT页表, 并向其他应用程序提供了EPT页表操作接口。从虚拟机管理程序的角度来看, 需要考虑以下几种内存空间,有:主机物理地址 (Host Physical Address): 本地主机物理地址空间,主机虚拟地址 (Host Virtual Address): 基于MMU机制的本地主机虚拟地址空间。我们使用页面表管理在HPA和HVA空间之间进行映射。从虚拟机上运行的客户操作系统来看, 有:客户物理地址 (Guest Physical Address): 虚拟机的客户操作系统的物理地址空间。在GPA到HPA之间的映射通常需要基于类似MMU的硬件模块 (例如X86中的EPT), 同时与页面表相关联客户操作系统虚拟地址 (Guest Virtual Address): 基于VMMU机制的虚拟机中客户操作系统的虚拟地址空间通常在这样的架构下,内存地址访问有四层映射:GVA - GPA - HVA - HPA GVA - GPA 的映射由客户操作系统来负责,而 HVA - HPA 由微内核虚拟化操作系统来负责维护。于是在虚拟化系统中我们需要一种机制,来维护 GPA - HVA 的映射。常用的实现有 SPT(Shadow Page Table) 和 EPT/NPT (Intel) ,前者通过软件维护影子页表,后者通过硬件特性实现二级映射。 本文说明虚拟化系统的内存管理基础结构, 以及它如何在虚拟化系统内处理不同的内存空间:虚拟机管理程序如何管理本地主机内存 (HPA/HVA)虚拟机管理程序如何管理客户操作系统内存 (HPA/GPA)虚拟机管理程序如何管理两个不同客户操作系统内存(HPA/GPA) 虚拟化物理内存管理 在虚拟化系中, 虚拟机最先初始化MMU页表以管理所有物理内存, 然后切换到新的MMU页表。在平台初始化阶段初始化MMU页表后, 就不会对MMU页表进行更新,因为这牵涉到客户操作系统内存和交互区域,系统启动时间优化等问题,因此MMU在平台初始化阶段固定对系统稳定性有一定的影响。虚拟化物理内存分布 无可非议虚拟机管理程序必须具备系统内存管理功能。通常情况下, 系统启动引导程序 (例如Intel的EFI) 将系统物理内存布局表传递给虚拟机管理程序,虚拟机管理程序基于此表使用分级页表来执行内存管理工作。如下图所示,此表包含系统平台的原始内存布局。虚拟化内存初始化 虚拟机管理程序在分页模式下运行。系统启动引导处理器 (BSP) 获取系统平台内存布局表后, BSP将在此基础上创建其MMU页面表。应用处理器 (AP) 接收 IPI CPU启动中断后, 它将使用由BSP创建的 MMU页表,并启用SMEP。SMEP(Supervisor Mode Execution Prevention),在现代intel处理器上,当设置了CR4存器的控制位时,会保护特权进程(比如在内核态的程序)不能在不含supervisor标志(对于ARM处理器,就是PXN标志)的内存区域执行代码。(直白地说就是内核程序不能跳转到用户态执行代码)。 虚拟机管理程序可以访问所有系统内存,并有自己的内存,为其代码/数据的 write-back 缓存,使用最小内存页将虚拟地址空间映射到物理地址空间。如果更新了页面的内存类型或访问权限, 或者删除了某些虚拟地址空间, 则会导致相应页面的拆分。虚拟机管理程序仍将继续使用最小内存页将虚拟地址空间映射到物理地址空间。内存分页池功能 内存分页池功能提供了对多种4kb 页面大小内存块的动态管理, 虚拟机管理程序通常使用这些内存块来存储内部数据。通过这些功能, 虚拟机管理程序可以分配和释放相应的内存页面。虚拟机管理程序内存虚拟化 虚拟机管理程序为每个客户操作系统提供了一个连续的物理内存区域。它还保证每个客户操作系统互相隔离不能访问彼此程序中的代码和内部数据, 并且每个客户操作系统在未授权的情况下不能访问虚拟机的代码和内部数据。虚拟机管理程序应该支持以下功能:支持EPT和VPID硬件虚拟化功能,为每个客户操作系统建立EPT页表,提供EPT页表操作服务,为每个客户操作系统提供虚拟化的MTRR机制,提供VPID操作服务,为GPA和HPA之间的地址空间映射提供服务,提供虚拟机管理程序和每个客户操作系统之间的数据传输服务。虚拟化内存功能检查 在虚拟机管理程序中, 内存虚拟化提供 EPT/VPID功能检查服务和支持EPT大型页面检查服务。不同地址空间的数据传输 在虚拟化系统中, 虚拟机管理程序、不同客户操作系统中使用不同的内存空间来实现各自的隔离。在这些内存空间之间, 有不同类型的数据传输, 客户操作系统可能会使用超调用来请求虚拟机管理程序提供数据传输服务。访问客户操作系统内存地址GPA 当虚拟机管理程序需要访问GPA来进行数据传输时, 来自客户操作系统的调用方必须确保此GPA内存地址范围是连续的。但对于虚拟机管理程序中的HPA主机物理内存地址, 它可能是不连续的 (特别是对于 巨型页表分配机制下的用户操作系统)。例如, 4Mb的GPA地址范围可能映射到2个不同的2Mb巨型主机物理页面。虚拟机管理程序应该通过基于其HPA的EPT页面滑动来处理这种数据传输。访问客户操作系统内存地址GVA 当虚拟机管理程序需要访问GVA内存地址数据进行数据传输时, GPA和HPA地址可能都是不连续的。虚拟机管理程序最好监视这种数据传输, 并通过基于其GPA和HPA 内存页表相应滑动来处理它。内存扩展页表的操作 虚拟机管理程序使用最小内存页表将客户操作系统的物理地址 (GPA) 映射到主机物理地址 (HPA) 。 如果更新了页面的内存类型或访问权限或删除了某些 GPA 空间, 则会导致相应的EPT页表被拆分。虚拟机管理程序仍应继续使用最小的EPT页表将GPA空间映射到HPA空间。 虚拟机管理程序提供EPT客户操作系统物理内存增加、删除、EPT页表重新分配、以及内存无效服务。网络虚拟化原理常见的虚拟化技术解决方案OpenStackOpenStack是一个开源的云计算管理平台项目,OpenStack也是云计算技术,由几个主要的组件组合起来完成具体工作。OpenStack支持几乎所有类型的云环境,项目目标是提供实施简单、可大规模扩展、丰富、标准统一的云计算管理平台。OpenStack通过各种互补的服务提供了基础设施即服务(IaaS)的解决方案,每个服务提供API以进行集成。OpenStack是一个旨在为公共及私有云的建设与管理提供软件的开源项目。它的社区拥有超过130家企业及1350位开发者,这些机构与个人都将OpenStack作为基础设施即服务(IaaS)资源的通用前端。OpenStack项目的首要任务是简化云的部署过程并为其带来良好的可扩展性。本文希望通过提供必要的指导信息,帮助大家利用OpenStack前端来设置及管理自己的公共云或私有云。OpenStack云计算平台,帮助服务商和企业内部实现类似于 Amazon EC2 和 S3 的云基础架构服务(Infrastructure as a Service, IaaS)。OpenStack 包含两个主要模块:Nova 和 Swift,前者是 NASA 开发的虚拟服务器部署和业务计算模块;后者是 Rackspace开发的分布式云存储模块,两者可以一起用,也可以分开单独用。OpenStack除了有 Rackspace 和 NASA 的大力支持外,还有包括 Dell、Citrix、 Cisco、 Canonical等重量级公司的贡献和支持,发展速度非常快,有取代另一个业界领先开源云平台 Eucalyptus 的态势。KVMKVM代表着键盘(Keyboard)、显示器(Video)和鼠标(Mouse),即利用一组键盘、显示器和鼠标实现对多台设备的控制,在远程调度监控方面发挥着重要作用。KVM技术可以向远程终端发送调度信息网中的各项数据资料,为下一级调度机构提供方便,这样即便下级调度机构没有建立调度数据网,也能够实现信息的共享。多计算机切换器(KVM)以多主机切换技术为依据,借助一组键盘、鼠标和显示器完成多台服务器之间的切换,进而节省空间,降低成本,使得管理更为简易方便,以提升工作效率。该技术具有很多优点,应用十分广泛。首先,在整个机房管理中,改变了传统的一对一的控制方式,而采用了一对多的管理方式,有利于节省空间、提高工作效率;其次,主机系统的安全性能得到了很大提升,而且具备了长距离的传输能力,在与远程用户相连接时,安全性能得到良好的保证;在服务器较多的情况下,通过数字交换机与其他服务器相连,并能与远程相连,可同时对本地和远程进行控制。在一些大型系统的解决方案中,可使用具有模拟交换机矩阵功能的大型模块系统,能够满足终端用户同时对上百台甚至更多服务器的访问,进而实现从中心点通过KVM系统对各地的服务器进行有效控制。此外,该技术也可以在家庭中用,为普通用户提供了很多方便。Hyper-VHyper-V是微软的一款虚拟化产品,是微软第一个采用类似Vmware ESXi和Citrix Xen的基于hypervisor的技术。这也意味着微软会更加直接地与市场先行者VMware展开竞争,但竞争的方式会有所不同。Hyper-V是微软提出的一种系统管理程序虚拟化技术,能够实现桌面虚拟化 [1] 。Hyper-V最初预定在2008年第一季度,与Windows Server 2008同时发布。Hyper-V Server 2012完成RTM版发布。VMwareVMWare (Virtual Machine ware)是一bai个“虚拟PC”软件公司.它的产du品可zhi以使你在一台机器上同时运行dao二zhuan个或更多Windows、DOS、LINUX系统。shu与“多启动”系统相比,VMWare采用了完全不同的概念。多启动系统在一个时刻只能运行一个系统,在系统切换时需要重新启动机器。VMWare是真正“同时”运行,多个操作系统在主系统的平台上,就象标准Windows应用程序那样切换。而且每个操作系统你都可以进行虚拟的分区、配置而不影响真实硬盘的数据,你甚至可以通过网卡将几台虚拟机用网卡连接为一个局域网,极其方便。安装在VMware操作系统性能上比直接安装在硬盘上的系统低不少,因此,比较适合学习和测试。XenXen采用ICA协议 [1] ,通过一种叫做准虚拟化的技术获得高性能,甚至在某些与传统虚拟技术极度不友好的架构上(x86),Xen也有上佳的表现。与那些传统通过软件模拟实现硬件的虚拟机不同,在Intel VT-X支持下3.0版本之前的Xen需要系统的来宾权限,用来和Xen API进行连接。这种技术已经可以运用在NetBSD, GNU/Linux, FreeBSD和Plan 9系统上。Sun微系统公司也正在积极地将Solaris移植到Xen平台之上。Xen虚拟机可以在不停止的情况下在多个物理主机之间实时迁移。在操作过程中,虚拟机在没有停止工作的情况下内存被反复的复制到目标机器。虚拟机在最终目的地开始执行之前,会有一次60-300毫秒的非常短暂的暂停以执行最终的同步化,给人无缝迁移的感觉。类似的技术被用来暂停一台正在运行的虚拟机到磁盘,并切换到另外一台,第一台虚拟机在以后可以恢复。XEN 是一个基于X86架构、发展最快、性能最稳定、占用资源最少的开源虚拟化技术。Xen可以在一套物理硬件上安全的执行多个虚拟机,与 Linux 是一个完美的开源组合,Novell SUSE Linux Enterprise Server 最先采用了XEN虚拟技术。它特别适用于服务器应用整合,可有效节省运营成本,提高设备利用率,最大化利用数据中心的IT基础架构。XEN 是英国剑桥大学计算机实验室开发的一个虚拟化开源项目,XEN 可以在一套物理硬件上安全的执行多个虚拟机,它和操作平台结合的极为密切,占用的资源最少。编写文档时稳定版本为XEN3.0。支持万贯虚拟化和超虚拟化。以高性能、占用资源少著称,赢得了IBM、AMD、HP、Red Hat和Novell等众多世界级软硬件厂商的高度认可和大力支持,已被国内外众多企事业用户用来搭建高性能的虚拟化平台。IBM经常在其主机和服务器上使用虚拟机来尽可能发挥其性能,并类似chroot监禁那样将程序置于隔离的虚拟OS中以增强安全性。除此之外,它还能使不同和不兼容的OS运行在同一台计算机上。Xen对虚拟机活跃迁移的支持允许工荷平衡和避免停时。DockerDocker的思想来自于集装箱,集装箱解决了什么问题?在一艘大船上,可以把货物规整的摆放起来。并且各种各样的货物被集装箱标准化了,集装箱和集装箱之间不会互相影响。那么我就不需要专门运送水果的船和专门运送化学品的船了。只要这些货物在集装箱里封装的好好的,那我就可以用一艘大船把他们都运走。docker就是类似的理念。现在都流行云计算了,云计算就好比大货轮。docker就是集装箱。1.不同的应用程序可能会有不同的应用环境,比如.net开发的网站和php开发的网站依赖的软件就不一样,如果把他们依赖的软件都安装在一个服务器上就要调试很久,而且很麻烦,还会造成一些冲突。比如IIS和Apache访问端口冲突。这个时候你就要隔离.net开发的网站和php开发的网站。常规来讲,我们可以在服务器上创建不同的虚拟机在不同的虚拟机上放置不同的应用,但是虚拟机开销比较高。docker可以实现虚拟机隔离应用环境的功能,并且开销比虚拟机小,小就意味着省钱了。2.你开发软件的时候用的是Ubuntu,但是运维管理的都是centos,运维在把你的软件从开发环境转移到生产环境的时候就会遇到一些Ubuntu转centos的问题,比如:有个特殊版本的数据库,只有Ubuntu支持,centos不支持,在转移的过程当中运维就得想办法解决这样的问题。这时候要是有docker你就可以把开发环境直接封装转移给运维,运维直接部署你给他的docker就可以了。而且部署速度快。3.在服务器负载方面如果你单独开一个虚拟机,那么虚拟机会占用空闲内存的,docker部署的话,这些内存就会利用起来。常见虚拟化技术的应用实践虚拟化环境的搭建。

1.5云计算主要部署模式
公有云:众多企业公用一个云服务器,可以理解为共享资源服务。如果公有云比喻成出租公寓,那么企业就是其中的租户之一,当企业选择停止租用时,空间将被清理并释放出来租给下个租户。公有云的优点是价格低廉、使用便捷、节省维护成本,所以用户多以创业公司和个人居多。缺点是不够安全,容易发生文件泄露的风险,而且当需要移动大量数据的时候,企业面临的将是很大一笔费用。私有云:服务器可以是企业自己建立也可以是租用第三方服务器,企业独享服务器只为该企业提供数据服务。如果公有云是出租公寓,那么私有云就是独门独户的小别墅。私有云的优点是提供了更加安全的环境,用户可以根据需求选择定制其资源。缺点是安装成本高,高度安全性可能会使部分功能操作有局限性。混合云:混合了公有云和私有云的一种解决方式,企业可以将重要文件放置私有云,普通文件放置公有云,两者之间可以进行数据和应用的移植。混合云的优点是可以满足企业多样化需求,节省必要的开支。缺点是开发过程中因兼容等问题会变得比较复杂,后期的维护也需要花费时间和人力,对于企业的实力要求较高。

1.7经典的云计算产品
亚马逊AWS(Amazon Web Services (AWS) )是亚马逊提供的专业云计算服务,于2006年推出,以Web服务的形式向企业提供IT基础设施服务,通常称为云计算。其主要优势之一是能够以根据业务发展来扩展的较低可变成本来替代前期资本基础设施费用。亚马逊网络服务所提供服务包括:亚马逊弹性计算网云(Amazon EC2)、亚马逊简单储存服务(Amazon S3)、亚马逊简单数据库(Amazon SimpleDB)、亚马逊简单队列服务(Amazon Simple Queue Service)以及Amazon CloudFront等。

IBM在2007年11月15日推出了蓝云计算平台,为客户带来即买即用的云计算平台。它包括一系列的云计算产品,使得计算不仅仅局限在本地机器或远程服务器农场(即服务器集群),通过架构一个分布式、可全球访问的资源结构,使得数据中心在类似于互联网的环境下运行计算。通过IBM的技术白皮书,我们可以一窥蓝云计算平台的内部构造。“蓝云”建立在IBM大规模计算领域的专业技术基础上,基于由IBM软件、系统技术和服务支持的开放标准和开源软件。简单地说,“蓝云”基于IBM Almaden研究中心(Almaden Research Center)的云基础架构,包括Xen和PowerVM虚拟化、Linux操作系统映像以及Hadoop文件系统与并行构建。“蓝云”由IBM Tivoli软件支持,通过管理服务器来确保基于需求的最佳性能。这包括通过能够跨越多服务器实时分配资源的软件,为客户带来一种无缝体验,加速性能并确保在最苛刻环境下的稳定性。IBM新近发布的“蓝云(Blue Cloud)”计划,能够帮助用户进行云计算环境的搭建。它通过将Tivoli、DB2、WebSphere与硬件产品(目前是x86刀片服务器)集成,能够为企业架设一个分布式、可全球访问的资源结构。根据IBM的计划,首款支持Power和x86处理器刀片服务器系统的“蓝云”产品将于2008年正式推出,并且计划随后推出基于System z“大型主机”的云环境,以及基于高密度机架集群的云环境。
阿里云服务大概分两个方面:1、把传统的计算机系统(包括软件、硬件等)SAAS化,终端用户不再关心底层建设,只需要按需求购买服务即可。比如云服务器ECS、云数据库RDS、云存储OSS/NAS、云防火墙等等,原来都是需要自建购买软硬件来完成相应的业务,现在可以全部以服务形式购买、使用;2、把分散、独立的服务聚合在一起。比如域名注册、企业邮箱服务、短信服务、安全验证服务、大数据服务等等再针对性举例:云服务器ECS云服务器ECS相当于一台虚拟服务器,基于庞大的物理服务器集群虚拟出来的,但可以像独立服务器一样使用,常见的是作为应用服务器(基于容器提供web服务)或数据库服务器(当然,阿里有专业的云数据库,在此不做多述)。应用服务器中最简单的一种应用方式是,比如个人博客、企业官网、web业务系统等,邮件服务之外(ECS默认禁用邮件SMTP服务25 端口,特殊情况需报备审核后使用)

                                               《第二章》大数据技术概述

2.1大数据技术的产生

2.1.1大数据的基本概念

什么是大数据? 大数据,或称巨量数据、海量数据、大资料,指的是所涉及的数据量规模巨大到无法通过人工,在合理时间达到截取、管理、处理、并整理成为人类所能解读的形式的信息。

2.1.2大数据产生的原因

进入2012年,大数据 一词越来越多地被提及,人们用它来描述和定义信息爆炸时代产生的海量数据,并命名与之相关的技术发展与创新。它已经上过《纽约时报》《华尔街日报》的专栏封面,进入美国白宫官网的新闻,现身在国内一些互联网主题的讲座沙龙中,甚至被嗅觉灵敏的证券公司等写进了投资推荐报告。数据正在迅速膨胀并变大,它决定着企业的未来发展,虽然现在企业可能并没有意识到数据爆炸性增长带来问题的隐患,但是随着时间的推移,人们将越来越多的意识到数据对企业的重要性。大数据时代对人类的数据驾驭能力提出了新的挑战,也为人们获得更为深刻、全面的洞察能力提供了前所未有的空间与潜力。最早提出大数据时代到来的是全球知名咨询公司麦肯锡,麦肯锡称:“数据,已经渗透到当今每一个行业和业务职能领域,成为重要的生产因素。人们对于海量数据的挖掘和运用,预示着新一波生产率增长和消费者盈余浪潮的到来。”“大数据”在物理学、生物学、环境生态学等领域以及军事、金融、通讯等行业存在已有时日,却因为近年来互联网和信息行业的发展而引起人们关注。大数据在互联网行业指的是这样一种现象:互联网公司在日常运营中生成、累积的用户网络行为数据。这些数据的规模是如此庞大,以至于不能用G或T来衡量,大数据的起始计量单位至少是P(1000个T)、E(100万个T)或Z(10亿个T)。
产生大数据的的一个很重要的因素是芯片技术的提升,信息处理能力按照摩尔定理逐年加快,同时成本相对下降。芯片技术的提升导致数据存储成本的下降、信息传输速率的不断提升、计算能力的提升,缺了任何一项,大数据就很难生存。在这个过程中,互联网、移动互联网的普及的快速发展让大数据向我们快速走来。有了这些作为基础,各种传感器的出现,物联网的应用不断涌现,大数据将会越来越大。

大数据这个术语的出现大概可追溯到Apache的开源项目Nutch。当时,大数据——Big Data——是用来描述为更新网络搜索索引需同时进行批量处理或分析的大量数据集。随着MapReduce和Google File System(GFS)的发布,从2009年开始,大数据才开始成为互联网行业的流行词汇,也吸引了越来越多的关注。物联网、云计算、移动互联网、手机与平板电脑、PC以及遍布各个角落的各种各样的传感器,无一不是大数据的来源或承载方。可以说,大数据就在我们的身边——从阿里巴巴、1号店、京东商城等电子商务数据,到QQ、MSN等即时聊天内容,再到Google、Bing、百度,又到社会网络与微博数据等,都在生产、承载着大数据。随着大量的数据的产生也给数据处理和挖掘带来许多困难,信息处理量的增大(注:据统计,Facebook对某一主题进行搜索时,需在超过50TB的数据中迅速找出相关内容;在eBay存储了超过2PB的数据以备查询需要),很多传统方法(如RDBMS、SQL查询等)都不能直接应用在对海量数据的处理上,否则时间开销将会变得非常大。对大数据的挖掘与分析变得愈发重要。而通过对Google、百度、Bing、Facebook、网页文本、微博消息等的挖掘与分析,使人们的行为和情绪的细化测量成为可能。挖掘用户的行为习惯和喜好,从凌乱纷繁的大数据背后找到符合用户兴趣和习惯的产品和服务并对产品和服务进行有针对性地调整和优化,本身就蕴含着巨大的商机。北京理工大学大数据搜索与挖掘实验室张华平主任研发的NLPIR大数据语义智能分析技术是满足大数据挖掘对语法、词法和语义的综合应用。NLPIR大数据语义智能分析平台是根据中文数据挖掘的综合需求,融合了网络精准采集、自然语言理解、文本挖掘和语义搜索的研究成果,并针对互联网内容处理的全技术链条的共享开发平台。NLPIR大数据语义智能分析平台主要有精准采集、文档转化、新词发现、批量分词、语言统计、文本聚类、文本分类、摘要实体、智能过滤、情感分析、文档去重、全文检索、编码转换等十余项功能模块,平台提供了客户端工具,云服务与二次开发接口等多种产品使用形式。各个中间件API可以无缝地融合到客户的各类复杂应用系统之中,可兼容Windows,Linux, Android,Maemo5, FreeBSD等不同操作系统平台,可以供Java,Python,C,C#等各类开发语言使用

 2.1.3大数据概念的提出
 
 2014 年,马云提出,“人类正在从 IT 时代走向 DT 时代”。如果说在 IT 时代是以自我控制、自我管理为主,那么到了 DT(Data Technology) 时代,则是以服务大众、激发生产力为主。 在 DT 时代,人们比以往任何时候更能收集到更丰富的数据。数据正在变革我们的生活,催生了大数据行业的发展。百度百科中这样定义大数据(big data),指无法在一定时间范围内用常规软件工具进行捕捉、管理和处理的数据集合,是需要新处理模式才能具有更强的决策力、洞察发现力和流程优化能力的海量、高增长率和多样化的信息资产。这个新处理模式,就是大数据技术了。下图是我整理的主要大数据技术发展历程。在大数据时代,传统的软件已经无法处理和挖掘大量数据中的信息。最重要的变革着就是谷歌的“三架马车”。谷歌在 2004 年左右相继发布谷歌分布式文件系统 GFS、大数据分布式计算框架 Mapreduce、大数据 Nosql 数据库 BigTable ,这三篇论文奠定了大数据技术的基石。变革总是像谷歌那样的大公司主导的,在当时大部分公司还在致力于提高单机性能时,谷歌已经开始设想把数据存储、计算分给大量的廉价计算机去执行。受 Google 的论文启发,2004 年 7 月,Doug Cutting 和 Mike Cafarella 在 Nutch 中实现了类似 GFS 的功能,即后来 HDFS 的前身。后来 2005 年 2 月,Mike Cafarella在 Nutch 中实现了 MapReduce 的最初版本。到 2006 年 Hadoop 从 Nutch 中分离出来并启动独立项目。Hadoop 的开源推动了后来大数据产业的蓬勃发展,带了了一场深刻的技术革命。接下来,大数据相关技术不断发展,开源的做法让大数据生态逐渐形成。由于 Mapredece 编程繁琐,Facebook 贡献 Hive,sql 语法为数据分析、数据挖掘提供巨大帮助。第一个运营 Hadoop 的商业化公司 Cloudera 也在 2008 年成立。由于内存硬件已经突破成本限制,2014 年 Spark 逐渐替代 Mapreduce 的地位,受到业界追捧。Spark 在内存内运行程序的运算速度能做到比 Hadoop MapReduce 的运算速度快 100 倍,并且其运行方式适合机器学习任务。Spark 在 2009 年诞生于 UC Berkeley AMPLab, 2010 年开源,2013 年贡献到 Apache 基金会。Spark 和 Mapreduce 都专注于离线计算,通常时间是几十分钟甚至更长时间,为批处理程序。由于实时计算的需求,流式计算引擎开始出现,包括 Storm、Flink、Spark Streaming。大数据存储和处理技术的发展同时也带动了数据分析、机器学习的蓬勃发展,也促使了新兴产业的不断涌现。大数据技术是基石,人工智能的落地是下一个的风口。身处在互联网行业中,感觉到技术进步很快,要略去浮躁,把握住变革的到来。摘录一个总结: 1.论文奠定技术发展基石; 2.业务催生技术不断突破; 3.效率倒逼技术迭代更新
大数据这一术语产生于全球数据爆炸增长的背景下,用来形容庞大的数据集合。而大数据时代的到来标志着一场深刻的革命,这似乎才是信息化发展的“第三次浪潮”。其来势之迅猛,对经济社会及人们的生产生活影响之巨大、之深刻,是难以估量的。信息正以生产资料要素的身份参与到生产之中,其表现形式就是信息数据的资源化和人们行为的数据化,大到数字政府、数字经济、数字社会,小到数字城市、数字交通、数字环保等都应运而生。数据资源这种取之不尽、用之不竭并在无限循环中的交互作用,使其价值难以估量。虽然,我国大数据发展起步较晚,但发展速度却非常快。国家对大数据十分重视,明确提出要“实施国家大数据战略,推进数据资源开放共享”。大数据已成为时代的潮流,历史的必然。在新中国成立70周年之际,我们回顾过去,聚焦大数据这一新兴技术的发展。为大家呈现大数据在我国发展的一些脉络;同时展望未来,大数据战略作为‘十三五’期间的十四大国家战略之一,是中国经济发展新的驱动力。大数据通过提供全样本分析手段,使得很多不可能变成可能,在各个行业领域都已经产生了重要影响,大数据的魅力无处不在。今天的文章,我就从大数据的发展历史、特点、现状和典型案例等角度,对大数据技术进行一下综合介绍。(1)大数据的发展历程随着计算机和网络的发展,信息不断“爆炸”:1970s: 超大规模数据库 (VLDB)【GB=10^9字节】21世纪初:海量数据(massive data)【TB=10^12字节】2008年:Big data 【PB=1015字节】现在实际的数据量已经达到:ZB=103EB=106PB=1021字节一个新单位:1YB=103ZB=1024字节2008年9月4日,《自然》(Nature)刊登了一个名为“Big Data”的专辑。2011年5月,美国著名咨询公司麦肯锡(McKinsey)发布《大数据:创新、竞争和生产力的下一个前沿》的报告,首次提出了“大数据”概念,认为数据已经成为经济社会发展的重要推动力。大数据指的是大小超出常规的数据库工具获取、存储、管理和分析能力的数据集。2013年3月29日,美国奥巴马政府宣布推出“大数据研究和发展计划”(Big Data Research and Development Initiative),有人将其比之为克林顿政府当年提出的“信息高速公路”计划 。该计划涉及美国国家科学基金会、卫生研究院、能源部、国防部等6个联邦政府部门,投资超两亿美元,研发收集、组织和分析大数据的工具及技术。2012年7月日本推出“新ICT战略研究计划”,在新一轮IT振兴计划中日本政府把大数据发展作为国家层面战略提出。这是日本新启动的2011年大地震一度搁置的政府ICT战略研究。英国政府也宣称投资6亿英镑科学资金,并计划在未来两年内在大数据和节能计算研究投资1.89亿英镑。政府把大量的资金投入到计算基础设施,用以捕捉并分析通过开放式数据革命获得的数据流,带动企业投入更多的资金。2012年3月,我国科技部发布的“十二五国家科技计划信息技术领域2013年度备选项目征集指南”把大数据研究列在首位。中国分别举办了第一届(2011年)和第二届(2012年)“大数据世界论坛”。IT时代周刊等举办了“大数据2012论坛”,中国计算机学会举办了“CNCC2012大数据论坛”。国家科技部,863计划信息技术领域2015年备选项目包括超级计算机、大数据、云计算、信息安全、第五代移动通信系统(5G)等。2015年8月31日,国务院正式印发《促进大数据发展行动纲要》。国内外传统IT巨头(IBM、微软、惠普、Oracle,联想、浪潮等),通过“硬件+软件+数据”整合平台,向用户提供大数据完备的基础设施和服务,实现“处理-存储-网络设备-软件-应用”,即所谓“大数据一体机”。在大数据时代,这些厂商在原有结构化数据处理的同时,开始加大在可扩展计算、内存计算、库内分析、实时流处理和非结构化数据处理等方面的投入,通过并购大数据分析企业,迅速增强大数据分析实力和扩展市场份额。国内外互联网巨头(亚马逊、Google、Facebook、阿里巴巴、百度、腾讯等),这些互联网公司基于开源大数据框架(在大数据时代,催生了开源的大数据分布式处理软件框架Hadoop:包括分布式文件系统HDFS,并行编程框架Map-Reduce,数据仓库工具Hive和大数据分析平台Pig等)进行了自身应用平台的定制和开发,基于自身应用平台、庞大的用户群、海量用户信息以及互联网处理平台,提供精确营销、个性化推介等商务活动,并开始对外提供大数据平台服务。(3)大数据的特点:四个VVolume(Amount of Data):大容量(主要体现数据存储量大和计算量大)。Velocity(Speed of Data in & out ):快速率(主要指数据更新、增长速度快,数据存储、传输、处理速度快)。Variety(Range of Data Types & Sources):多样性(包括结构化的原数据库表格数据和半结构化、非结构化的文本、视频、图像等信息)。Value(Usefulness of Data):高价值(大海捞针,“在大数据困难面前,不被利用就是成本”)。(4)大数据存储、检索与挖掘分析的关键技术大数据的存储、检索与挖掘分析,目前已经形成了完整和成熟的开源和商业生态链。包括关系型数据库, 非关系型数据库,NoSQL, 流计算,SQL on Hadoop, OLAP on Hadoop, OLTP on Hadoop,Cache 缓存,In-Memory DB, In-Memory Data Grid等等 。利用自然语言处理、信息检索、数据挖掘、机器学习等技术,可以从大数据中获得有价值的信息和知识。(5)大数据的典型案例互联网大数据交通大数据社交大数据生物大数据(6)云计算和大数据时代的来临云计算在中国已经开始普及式、爆发式增长大数据时代,云计算及大数据已进行了全面融合。云计算侧重资源管理,而大数据侧重业务应用。云计算资源池化的管理模式是大数据应用的前提。云计算提供的存储和计算资源池可动态支撑大数据分析业务不断变化的需求。

 2.1.4第四范式大数据对科学研究产生的影响
 

第四范式成立于 2014 年,是一家人工智能技术与服务提供商,数据科技驱动行业应用的创新者,业务是利用机器学习技术和经验,通过对数据进行精准预测与挖掘,揭示出数据背后的规律,帮助企业提升效率、降低风险,获得更大的商业价值。其研发的先知平台为企业级 AI 平台[1]。目前,第四范式已在银行、保险、政务、能源、智能制造、零售、医疗、证券等领域积累超过上万个AI落地案例,助力各行各业 AI 创新变革。

吉姆·格雷是一个传奇人物。他是1998年图灵奖得主,著名的计算机科学家。2007年1月28日,他在自己酷爱的航海运动中驾驶帆船失踪于茫茫大海之上。短短17天之前,1月11日,他在加州山景城召开的NRC-CSTB(National Research Council-Computer Science and Telecommunications Board)上,发表了他的著名演讲:科学方法的一次革命。在这篇演讲中,吉姆·格雷将科学研究的范式分为四类——除了之前的实验范式、理论范式、仿真范式之外,新的信息技术已经促使新的范式出现——数据密集型科学发现(Data-Intensive Scientific Discovery)。这个第四范式,所谓的“数据密集型”,也就是现在我们所称的“大数据”。吉姆·格雷(左)一、何谓“第四范式”“范式”一词,英文名Paradigm,一般指已经形成模式的,可直接套用的某种特定方案或路线。在计算机科学界,编程有编程范式,数据库有数据库架构的范式,不一而足。总之,你将其认为是某种必须遵循的规范或大家都在用的套路即可。在科学发现领域,第一范式,是指以实验为基础的科学研究模式。简单说来,就是以伽利略为代表的文艺复兴时期的科学发展初级阶段。在这一阶段,伽利略老师爬上比萨斜塔扔俩铁球,掐着脉搏为摆动计时等等我们耳熟能详的故事,为现代科学开辟了崭新的领域,开启了现代科学之门。当实验条件不具备的时候,为了研究更为精确的自然现象,第二范式,即理论研究为基础的科学研究模式随之而来。在这个阶段,科学家们会将无法用实验模拟的科学原理用模型简化,去掉一些复杂的因素,只留下关键因素,然后通过演算得到结论。比如我们熟知的牛顿第一定律:任何物体都要保持匀速直线运动或静止状态,直到外力迫使它改变运动状态为止。这个结论就是在假设没有摩擦力的情况下得出的。令人欣喜的是,当时的理论科学与实验科学结合得如此完美,任何一个理论都很容易被实验所证实。因此第二范式很快成为了重要的科研范式。第二范式发展到极致是19世纪末,当时牛顿三大定律解释了经典力学,麦克斯韦理论解释了电磁学。经典物理学的大厦构建得宏伟壮观,而且似乎毫无瑕疵。结果在20世纪初,天边的两朵乌云无情地破坏了它的完美。量子力学和相对论两座暂新的高山拔地而起,那是科学的另一个黄金时代。然而,不论是量子力学还是相对论,不约而同地以理论研究为主,超凡的头脑和计算超越了实验。尽管在一段时间之后,经过复杂设计的实验终究还是证实了计算的理论。因此每一位中学物理老师都会把牛顿和爱因斯坦相提并论,并称人类历史上最伟大的两位物理学家。随着验证理论的难度和经济投入越来越高,正在科学研究逐渐力不从心之际,另一位顶尖科学家站了出来。冯·诺依曼老师,在上世纪中期提出了现代电子计算机的架构,并一直持续到今天。冯·诺依曼于是,随着电子计算机的高速发展,第三范式,即利用电子计算机对科学实验进行模拟仿真的模式得到迅速普及。不论在基础科学研究还是工程实验中,计算机仿真越来越多地取代实验,成为科研的常用方法。半个世纪之后的2013年,诺贝尔化学奖甚至授予了用计算机模拟开发多尺度复杂化学系统模型的科学家卡普拉斯、莱维特和瓦谢勒。诺贝尔化学奖评选委员会在当天发表的声明中说:现在,对化学家来说,计算机是同试管一样重要的工具,计算机对真实生命的模拟已为化学领域大部分研究成果的取得立下了“汗马功劳”。那么,当时间进入互联网时代,吉姆·格雷认为,鉴于数据的爆炸性增长,数据密集范式理应并且已经从第三范式即计算范式中分离出来,成为一个独特的科学研究范式,即“第四范式”。二、“第四范式”的特点同样是计算,第四范式与第三范式有什么区别呢?最显著的区别就是:计算范式是先提出可能的理论,再搜集数据,然后通过计算仿真进行理论验证。而数据密集型范式,是先有了大量的已知数据,然后通过计算得出之前未知的可信的理论。简单举个例子说明吧。以前我们对一个问题(比如雾霾)进行研究是这样的:首先,发现问题,比如出现雾霾了,想知道雾霾是什么,怎么预防。其次,发现这个事儿好像不那么简单,雾霾的形成机理除了源头、成分等东西之外,还包括气象因素,包括地形、风向、湿度等等,参数之多超出了我们的控制范围。那么我们要怎么办呢?去除一些看起来不怎么重要的参数,保留一些简单的参数,提出一个理论。然后搜集数据,用计算机进行模拟,并不断对理论进行修正。最后得出可信度比较高的结果,以此来对可能形成雾霾天气的预测。这条途径大家都熟悉,这就是第三范式。但是,这条途径中有一个看起来很小的问题:你如何确定哪些参数是重要的,哪些是不重要的?那些看起来不重要的参数,会不会在某些特定条件下,起到至关重要的作用?毕竟南美洲的一只蝴蝶扇扇翅膀都可能引起印度洋的风暴啊不是么?从这一点来看,能够获取最全面的数据,也许才能真正探寻到雾霾的成因,以及做出更科学的预测。那么第四范式就是这样一个研究方法。首先,布置海量的监测点,收集海量的数据。海量的意思就是比传统意义上多得多。传统意义上我们在北京市布置几十个上百个监测点,海量的意思……嗯,我们假设每款手机都自带PM2.5测量功能,这样全北京市就有2000万的监测点,而且这些监测点还有空间的移动信息。这样相对于固定监测点所产生的数据,就是海量数据。其次,利用这些数据,分析得出雾霾的形成原因和预测。最后,验证预测,从中总结出理论。大家已经看到了,第二和第三步我都只用了一句话。不是因为它很简单,恰恰相反,而是因为它太复杂,我无法在这篇小文章中详细阐述。事实上,在当今,许多研究人员所面临的最大问题,已经不是缺少数据,而是面对太多的数据,不知道怎么来使用它们。因为这种体量的数据,基本上可以认为,已经超出了普通人的理解和认知能力。幸运的是我们有了超级计算机,有了计算集群,有了超大的分布式数据库,还有了基于互联网的云计算。这就使得运用第四范式的科学研究成为了可能。三、“第四范式”的挑战第四范式科研已经在气象和环境、生物和医学方面取得了很大进展,但很明显,随着移动互联网的发展,各行各业产生的数据呈现爆炸式的增长,科研人员所面对的各个领域的数据只会越来越多。那么问题来了,实现第四范式的科研,从中发现更多更新的成果,所面临的挑战有哪些呢?第一,不同结构数据的整合。作为一个研究雾霾的人员,我需要气象数据,还需要工厂排放的数据、汽车尾气的数据,这些不同来源的数据势必有不同的形态。简单点说,一个excel表跟一个word文档,怎么把它们结合起来使用(当然实际情况比这个复杂得多)。这是一开始我们要使用第四范式时就会面对的最大问题。第二,海量数据的处理。你使用的excel表可以处理多少条数据?很多人可能不知道,一个工作表是65535行(2的16次方=65536)和255列(2的8次方=256)。桌面使用的Access数据表呢?我实际使用中,基本上超过十万条速度就会很慢了。SQL Server或者Oracle这类商用数据库?百万到千万级数据记录问题不大,过亿甚至到千亿的量级,凭借分布式处理也还可以支撑。但更多呢?千万亿量级呢?不要以为千万亿量级是一个很遥远的概念。简单起见,不按1024按1000算,一MB就是一百万Byte,一GB就是十亿,一TB就是万亿,一PB就是千万亿……PB后面是EB、ZB、YB。嗯,阿里巴巴2014年3月宣布其数据量已经超过100PB。所以说,当你想剁手的时候,想像一下你给这么多数据里所做的贡献也不过是沧海一粟,估计负罪感会减轻很多吧。为了解决这么多数据的问题,常见的数据库肯定是只能摊手了。好在做搜索引擎的那些人早就要面对这个问题,然后他们也比较好地解决了这个问题。谷歌的MapReduce架构,阿帕奇在此基础上弄出的Hadoop,几年的功夫就席卷了计算机界,成为目前分析大数据的领先平台。所以现在这个问题暂时算是解决了,当然了,永远只能是“暂时”解决。第三,算法的发展。其实针对大数据的算法没多少好说的,基本上还是最开始那些算法。最基本的,贝叶斯、决策树、k-关联算法、聚类分析。值得一提的是人工智能,从70年代发展以后,近几年人工智能倒是借着大数据的东风发展了一把。因为人工智能主要依靠大量数据的训练,所以数据越多,对人工智能的训练就越靠谱。因此类似于人工智能、遗传算法之类的分层次不太可控的算法,应该是发展方向。第四,研究结论的展现。这是值得一提的方面。对于大数据的分析,展现出的结论一般人未必能直观地了解。本来嘛,过亿数量级的数据,已经超出了人类统计学的理解能力。如何将其展现给人类(甲方/用户/普通群众),则是一个如何将神化的东西接地气的问题。大数据分析结果的可视化,在近几年确实是一个热点。另一方面,移动互联时代,读图比读文字要直观得多(本文只有文字而没有图是一大缺陷,希望我罗里吧嗦的文字能够让看的人看得懂)。大家在微博上看到的大部分大数据分析结论,都是图片更直观。因此,如何将研究结果展现出来,让人脑能够接受,这也是一个很重要的问题。数据的可视化展示四、高校利用“第四范式”开展科研本来作为科普文,到第三部分也就可以结束了。但身为高校的一份子,有些事情还是想继续说说,遂有此部分文字。作为科研的主力军,我国高校承担了国家70%以上的科研项目,并取得了大量的科研成果。同时,自上世纪八十年代以来,我国高校迅速经过第一和第二范式的科研训练,很快接受了第三范式。计算机仿真成为科研中快速追赶世界领先水平的重要手段。然而,面对大数据海啸(这个词已经取代了“浪潮”成为更形象的比喻了)的第四范式,我国高校却面临一定的困局。首先,收集并管理海量数据,需要巨量的投入。没有一所高校或研究机构能够负担上千万台服务器这样的投入。另一方面,在互联网和云计算技术已经发展成熟的时代,重复投入建设也是一种巨大的浪费。其次,大部分高校尚未能理解大数据对于科研意味着什么。提出理论、进行模拟和仿真、得到结论这一传统步骤仍然是主要的研究方式,更遑论大数据的基本原理和分析方法,很多科研人员更是所知寥寥。这一困局无法突破,科研的未来只能继续跟在别人身后亦步亦趋,难以在工程学科、社会学科等方面得出重大的成果。而如果能够突破这一困局,或许将成为我国整个科技工作实现弯道超车的关键。事实上,非洲一些贫困国家的科研,已经通过互联网实现与欧洲或北美的共同研究,并取得了相当快的进展。利用欧洲和北美积累的科研大数据,非洲一些国家比如肯尼亚、南非、阿尔及利亚的科研水平得到了大幅的提高。传统大数据研究的步骤个人认为,要积极拥抱科研的“第四范式”,国内高校需要在以下几个方面取得突破:1、尽快搭建自身的虚拟云平台,为科研人员提供虚拟计算空间。目前浙江大学已经计划与阿里巴巴合作建设私有云,将来为每位教师提供个人的计算空间服务。2、将云计算、大数据分析技术作为基础课程设置,使其作为科研的基本工具和必要科研素质。3、与大型互联网企业进行合作,作为科研平台建设的一部分,力争以低廉价格获取各类海量数据和计算资源。在这方面,斯坦福大学与亚马逊云服务的合作可作借鉴。亚马逊为美国大学提供廉价的云计算资源及可供分析的数据资源,解脱了大学对于这方面巨量投入的负担,同时也使得亚马逊积累的海量数据能够得到更好的利用。4、以交叉学科平台建设、协同创新中心建设等多样化的科研模式创新,促进不同类型不同来源数据的整合,形成新知识新发现的不断涌现。综上,数据密集型科技发现范式,超越了时间和空间的限制,也超越了学科藩篱,是科技发展史上难得的契机。抓住其发展方向,扩大其应用范围,实现我国科研的跨越式发展并非天方夜谭。            

2.1.5云计算与大数据的关系

一、云计算最初的目标我们首先来说云计算。云计算最初的目标是对资源的管理,管理的主要是计算资源、网络资源、存储资源三个方面。1管数据中心就像配电脑什么叫计算、网络、存储资源?比如你要买台笔记本电脑,是不是要关心这台电脑是什么样的CPU?多大的内存?这两个就被我们称为计算资源。这台电脑要上网,就需要有个可以插网线的网口,或者有可以连接我们家路由器的无线网卡。您家也需要到运营商比如联通、移动或者电信开通一个网络,比如100M的带宽。然后会有师傅弄一根网线到您家来,师傅可能会帮您将您的路由器和他们公司的网络连接配置好。这样您家的所有的电脑、手机、平板就都可以通过您的路由器上网了。这就是网络资源。您可能还会问硬盘多大?过去的硬盘都很小,大小如10G之类的;后来即使500G、1T、2T的硬盘也不新鲜了。(1T是1000G),这就是存储资源。对于一台电脑是这个样子的,对于一个数据中心也是同样的。想象你有一个非常非常大的机房,里面堆了很多的服务器,这些服务器也是有CPU、内存、硬盘的,也是通过类似路由器的设备上网的。这时的问题就是:运营数据中心的人是怎么把这些设备统一的管理起来的呢?2灵活就是想啥时要都有,想要多少都行管理的目标就是要达到两个方面的灵活性。具体哪两个方面呢?举个例子来理解:比如有个人需要一台很小的电脑,只有一个CPU、1G内存、10G的硬盘、一兆的带宽,你能给他吗?像这种这么小规格的电脑,现在随便一个笔记本电脑都比这个配置强了,家里随便拉一个宽带都要100M。然而如果去一个云计算的平台上,他要想要这个资源时,只要一点就有了。这种情况下它就能达到两个方面灵活性:时间灵活性:想什么时候要就什么时候要,需要的时候一点就出来了;空间灵活性:想要多少就有多少。需要一个太很小的电脑,可以满足;需要一个特别大的空间例如云盘,云盘给每个人分配的空间动不动就很大很大,随时上传随时有空间,永远用不完,也是可以满足的。空间灵活性和时间灵活性,即我们常说的云计算的弹性。而解决这个弹性的问题,经历了漫长时间的发展。3物理设备不灵活第一个阶段是物理设备时期。这个时期客户需要一台电脑,我们就买一台放在数据中心里。物理设备当然是越来越牛,例如服务器,内存动不动就是百G内存;例如网络设备,一个端口的带宽就能有几十G甚至上百G;例如存储,在数据中心至少是PB级别的(一个P是1000个T,一个T是1000个G)。然而物理设备不能做到很好的灵活性:首先是它缺乏时间灵活性。不能够达到想什么时候要就什么时候要。比如买台服务器、买个电脑,都要有采购的时间。如果突然用户告诉某个云厂商,说想要开台电脑,使用物理服务器,当时去采购就很难。与供应商关系好的可能需要一个星期,与供应商关系一般的就可能需要采购一个月。用户等了很久电脑才到位,这时用户还要登录上去慢慢开始部署自己的应用。时间灵活性非常差。其次是它的空间灵活性也不行。例如上述的用户需要一个很小很小的电脑,但现在哪还有这么小型号的电脑?不能为了满足用户只要一个G的内存是80G硬盘的,就去买一个这么小的机器。但是如果买一个大的,又会因为电脑大,需要向用户多收钱,可用户需要用的只有那么小一点,所以多付钱就很冤。4虚拟化灵活多了有人就想办法了。第一个办法就是虚拟化。用户不是只要一个很小的电脑么?数据中心的物理设备都很强大,我可以从物理的CPU、内存、硬盘中虚拟出一小块来给客户,同时也可以虚拟出一小块来给其他客户。每个客户只能看到自己的那一小块,但其实每个客户用的是整个大的设备上的一小块。虚拟化的技术使得不同客户的电脑看起来是隔离的。也就是我看着好像这块盘就是我的,你看着这块盘就是你的,但实际情况可能我的这个10G和你的这个10G是落在同样一个很大很大的存储上。而且如果事先物理设备都准备好,虚拟化软件虚拟出一个电脑是非常快的,基本上几分钟就能解决。所以在任何一个云上要创建一台电脑,一点几分钟就出来了,就是这个道理。这样空间灵活性和时间灵活性就基本解决了。5虚拟世界的赚钱与情怀在虚拟化阶段,最牛的公司是VMware。它是实现虚拟化技术比较早的一家公司,可以实现计算、网络、存储的虚拟化。这家公司很牛,性能做得非常好,虚拟化软件卖得也非常好,赚了好多的钱,后来让EMC(世界五百强,存储厂商第一品牌)给收购了。但这个世界上还是有很多有情怀的人的,尤其是程序员里面。有情怀的人喜欢做什么事情?开源。这个世界上很多软件都是有闭源就有开源,源就是源代码。也就是说,某个软件做的好,所有人都爱用,但这个软件的代码被我封闭起来,只有我公司知道,其他人不知道。如果其他人想用这个软件,就要向我付钱,这就叫闭源。但世界上总有一些大牛看不惯钱都让一家赚了去的情况。大牛们觉得,这个技术你会我也会;你能开发出来,我也能。我开发出来就是不收钱,把代码拿出来分享给大家,全世界谁用都可以,所有的人都可以享受到好处,这个叫做开源。比如最近的蒂姆·伯纳斯·李就是个非常有情怀的人。2017年,他因“发明万维网、第一个浏览器和使万维网得以扩展的基本协议和算法”而获得2016年度的图灵奖。图灵奖就是计算机界的诺贝尔奖。然而他最令人敬佩的是,他将万维网,也就是我们常见的WWW技术无偿贡献给全世界免费使用。我们现在在网上的所有行为都应该感谢他的功劳,如果他将这个技术拿来收钱,应该和比尔盖茨差不多有钱。开源和闭源的例子有很多:例如在闭源的世界里有Windows,大家用Windows都得给微软付钱;开源的世界里面就出现了Linux。比尔盖茨靠Windows、Office这些闭源的软件赚了很多钱,称为世界首富,就有大牛开发了另外一种操作系统Linux。很多人可能没有听说过Linux,很多后台的服务器上跑的程序都是Linux上的,比如大家享受双十一,无论是淘宝、京东、考拉……支撑双十一抢购的系统都是跑在Linux上的。再如有Apple就有安卓。Apple市值很高,但是苹果系统的代码我们是看不到的。于是就有大牛写了安卓手机操作系统。所以大家可以看到几乎所有的其他手机厂商,里面都装安卓系统。原因就是苹果系统不开源,而安卓系统大家都可以用。在虚拟化软件也一样,有了VMware,这个软件非常贵。那就有大牛写了两个开源的虚拟化软件,一个叫做Xen,一个叫做KVM,如果不做技术的,可以不用管这两个名字,但是后面还是会提到。6虚拟化的半自动和云计算的全自动要说虚拟化软件解决了灵活性问题,其实并不全对。因为虚拟化软件一般创建一台虚拟的电脑,是需要人工指定这台虚拟电脑放在哪台物理机上的。这一过程可能还需要比较复杂的人工配置。所以使用VMware的虚拟化软件,需要考一个很牛的证书,而能拿到这个证书的人,薪资是相当高,也可见复杂程度。所以仅仅凭虚拟化软件所能管理的物理机的集群规模都不是特别大,一般在十几台、几十台、最多百台这么一个规模。这一方面会影响时间灵活性:虽然虚拟出一台电脑的时间很短,但是随着集群规模的扩大,人工配置的过程越来越复杂,越来越耗时。另一方面也影响空间灵活性:当用户数量多时,这点集群规模,还远达不到想要多少要多少的程度,很可能这点资源很快就用完了,还得去采购。所以随着集群的规模越来越大,基本都是千台起步,动辄上万台、甚至几十上百万台。如果去查一下BAT,包括网易、谷歌、亚马逊,服务器数目都大的吓人。这么多机器要靠人去选一个位置放这台虚拟化的电脑并做相应的配置,几乎是不可能的事情,还是需要机器去做这个事情。人们发明了各种各样的算法来做这个事情,算法的名字叫做调度(Scheduler)。通俗一点说,就是有一个调度中心,几千台机器都在一个池子里面,无论用户需要多少CPU、内存、硬盘的虚拟电脑,调度中心会自动在大池子里面找一个能够满足用户需求的地方,把虚拟电脑启动起来做好配置,用户就直接能用了。这个阶段我们称为池化或者云化。到了这个阶段,才可以称为云计算,在这之前都只能叫虚拟化。7云计算的私有与公有云计算大致分两种:一个是私有云,一个是公有云,还有人把私有云和公有云连接起来称为混合云,这里暂且不说这个。私有云:把虚拟化和云化的这套软件部署在别人的数据中心里面。使用私有云的用户往往很有钱,自己买地建机房、自己买服务器,然后让云厂商部署在自己这里。VMware后来除了虚拟化,也推出了云计算的产品,并且在私有云市场赚的盆满钵满。公有云:把虚拟化和云化软件部署在云厂商自己数据中心里面的,用户不需要很大的投入,只要注册一个账号,就能在一个网页上点一下创建一台虚拟电脑。例如AWS即亚马逊的公有云;例如国内的阿里云、腾讯云、网易云等。亚马逊为什么要做公有云呢?我们知道亚马逊原来是国外比较大的一个电商,它做电商时也肯定会遇到类似双十一的场景:在某一个时刻大家都冲上来买东西。当大家都冲上买东西时,就特别需要云的时间灵活性和空间灵活性。因为它不能时刻准备好所有的资源,那样太浪费了。但也不能什么都不准备,看着双十一这么多用户想买东西登不上去。所以需要双十一时,就创建一大批虚拟电脑来支撑电商应用,过了双十一再把这些资源都释放掉去干别的。因此亚马逊是需要一个云平台的。然而商用的虚拟化软件实在是太贵了,亚马逊总不能把自己在电商赚的钱全部给了虚拟化厂商。于是亚马逊基于开源的虚拟化技术,如上所述的Xen或者KVM,开发了一套自己的云化软件。没想到亚马逊后来电商越做越牛,云平台也越做越牛。由于它的云平台需要支撑自己的电商应用;而传统的云计算厂商多为IT厂商出身,几乎没有自己的应用,所以亚马逊的云平台对应用更加友好,迅速发展成为云计算的第一品牌,赚了很多钱。在亚马逊公布其云计算平台财报之前,人们都猜测,亚马逊电商赚钱,云也赚钱吗?后来一公布财报,发现不是一般的赚钱。仅仅去年,亚马逊AWS年营收达122亿美元,运营利润31亿美元。8云计算的赚钱与情怀公有云的第一名亚马逊过得很爽,第二名Rackspace过得就一般了。没办法,这就是互联网行业的残酷性,多是赢者通吃的模式。所以第二名如果不是云计算行业的,很多人可能都没听过了。第二名就想,我干不过老大怎么办呢?开源吧。如上所述,亚马逊虽然使用了开源的虚拟化技术,但云化的代码是闭源的。很多想做又做不了云化平台的公司,只能眼巴巴的看着亚马逊挣大钱。Rackspace把源代码一公开,整个行业就可以一起把这个平台越做越好,兄弟们大家一起上,和老大拼了。于是Rackspace和美国航空航天局合作创办了开源软件OpenStack,如上图所示OpenStack的架构图,不是云计算行业的不用弄懂这个图,但能够看到三个关键字:Compute计算、Networking网络、Storage存储。还是一个计算、网络、存储的云化管理平台。当然第二名的技术也是非常棒的,有了OpenStack之后,果真像Rackspace想的一样,所有想做云的大企业都疯了,你能想象到的所有如雷贯耳的大型IT企业:IBM、惠普、戴尔、华为、联想等都疯了。原来云平台大家都想做,看着亚马逊和VMware赚了这么多钱,眼巴巴看着没办法,想自己做一个好像难度还挺大。现在好了,有了这样一个开源的云平台OpenStack,所有的IT厂商都加入到这个社区中来,对这个云平台进行贡献,包装成自己的产品,连同自己的硬件设备一起卖。有的做了私有云,有的做了公有云,OpenStack已经成为开源云平台的事实标准。9 IaaS, 资源层面的灵活性随着OpenStack的技术越来越成熟,可以管理的规模也越来越大,并且可以有多个OpenStack集群部署多套。比如北京部署一套、杭州部署两套、广州部署一套,然后进行统一的管理。这样整个规模就更大了。在这个规模下,对于普通用户的感知来讲,基本能够做到想什么时候要就什么什么要,想要多少就要多少。还是拿云盘举例子,每个用户云盘都分配了5T甚至更大的空间,如果有1亿人,那加起来空间多大啊。其实背后的机制是这样的:分配你的空间,你可能只用了其中很少一点,比如说它分配给你了5个T,这么大的空间仅仅是你看到的,而不是真的就给你了,你其实只用了50个G,则真实给你的就是50个G,随着你文件的不断上传,分给你的空间会越来越多。当大家都上传,云平台发现快满了的时候(例如用了70%),会采购更多的服务器,扩充背后的资源,这个对用户是透明的、看不到的。从感觉上来讲,就实现了云计算的弹性。其实有点像银行,给储户的感觉是什么时候取钱都有,只要不同时挤兑,银行就不会垮。10总结到了这个阶段,云计算基本上实现了时间灵活性和空间灵活性;实现了计算、网络、存储资源的弹性。计算、网络、存储我们常称为基础设施Infranstracture, 因而这个阶段的弹性称为资源层面的弹性。管理资源的云平台,我们称为基础设施服务,也就是我们常听到的IaaS(Infranstracture As A Service)。二、云计算不光管资源,也要管应用有了IaaS,实现了资源层面的弹性就够了吗?显然不是,还有应用层面的弹性。这里举个例子:比如说实现一个电商的应用,平时十台机器就够了,双十一需要一百台。你可能觉得很好办啊,有了IaaS,新创建九十台机器就可以了啊。但90台机器创建出来是空的,电商应用并没有放上去,只能让公司的运维人员一台一台的弄,需要很长时间才能安装好的。虽然资源层面实现了弹性,但没有应用层的弹性,依然灵活性是不够的。有没有方法解决这个问题呢?人们在IaaS平台之上又加了一层,用于管理资源以上的应用弹性的问题,这一层通常称为PaaS(Platform As A Service)。这一层往往比较难理解,大致分两部分:一部分笔者称为“你自己的应用自动安装”,一部分笔者称为“通用的应用不用安装”。自己的应用自动安装:比如电商应用是你自己开发的,除了你自己,其他人是不知道怎么安装的。像电商应用,安装时需要配置支付宝或者微信的账号,才能使别人在你的电商上买东西时,付的钱是打到你的账户里面的,除了你,谁也不知道。所以安装的过程平台帮不了忙,但能够帮你做得自动化,你需要做一些工作,将自己的配置信息融入到自动化的安装过程中方可。比如上面的例子,双十一新创建出来的90台机器是空的,如果能够提供一个工具,能够自动在这新的90台机器上将电商应用安装好,就能够实现应用层面的真正弹性。例如Puppet、Chef、Ansible、Cloud Foundary都可以干这件事情,最新的容器技术Docker能更好的干这件事情。通用的应用不用安装:所谓通用的应用,一般指一些复杂性比较高,但大家都在用的,例如数据库。几乎所有的应用都会用数据库,但数据库软件是标准的,虽然安装和维护比较复杂,但无论谁安装都是一样。这样的应用可以变成标准的PaaS层的应用放在云平台的界面上。当用户需要一个数据库时,一点就出来了,用户就可以直接用了。有人问,既然谁安装都一个样,那我自己来好了,不需要花钱在云平台上买。当然不是,数据库是一个非常难的东西,光Oracle这家公司,靠数据库就能赚这么多钱。买Oracle也是要花很多钱的。然而大多数云平台会提供MySQL这样的开源数据库,又是开源,钱不需要花这么多了。但维护这个数据库,却需要专门招一个很大的团队,如果这个数据库能够优化到能够支撑双十一,也不是一年两年能够搞定的。比如您是一个做单车的,当然没必要招一个非常大的数据库团队来干这件事情,成本太高了,应该交给云平台来做这件事情,专业的事情专业的人来做,云平台专门养了几百人维护这套系统,您只要专注于您的单车应用就可以了。要么是自动部署,要么是不用部署,总的来说就是应用层你也要少操心,这就是PaaS层的重要作用。虽说脚本的方式能够解决自己的应用的部署问题,然而不同的环境千差万别,一个脚本往往在一个环境上运行正确,到另一个环境就不正确了。而容器是能更好地解决这个问题。容器是 Container,Container另一个意思是集装箱,其实容器的思想就是要变成软件交付的集装箱。集装箱的特点:一是封装,二是标准。在没有集装箱的时代,假设将货物从 A运到 B,中间要经过三个码头、换三次船。每次都要将货物卸下船来,摆得七零八落,然后搬上船重新整齐摆好。因此在没有集装箱时,每次换船,船员们都要在岸上待几天才能走。有了集装箱以后,所有的货物都打包在一起了,并且集装箱的尺寸全部一致,所以每次换船时,一个箱子整体搬过去就行了,小时级别就能完成,船员再也不用上岸长时间耽搁了。这是集装箱“封装”、“标准”两大特点在生活中的应用。那么容器如何对应用打包呢?还是要学习集装箱。首先要有个封闭的环境,将货物封装起来,让货物之间互不干扰、互相隔离,这样装货卸货才方便。好在 Ubuntu中的LXC技术早就能做到这一点。封闭的环境主要使用了两种技术,一种是看起来是隔离的技术,称为 Namespace,也即每个 Namespace中的应用看到的是不同的 IP地址、用户空间、程号等。另一种是用起来是隔离的技术,称为 Cgroups,也即明明整台机器有很多的 CPU、内存,而一个应用只能用其中的一部分。所谓的镜像,就是将你焊好集装箱的那一刻,将集装箱的状态保存下来,就像孙悟空说:“定”,集装箱里面就定在了那一刻,然后将这一刻的状态保存成一系列文件。这些文件的格式是标准的,谁看到这些文件都能还原当时定住的那个时刻。将镜像还原成运行时的过程(就是读取镜像文件,还原那个时刻的过程)就是容器运行的过程。有了容器,使得 PaaS层对于用户自身应用的自动部署变得快速而优雅。三、大数据拥抱云计算在PaaS层中一个复杂的通用应用就是大数据平台。大数据是如何一步一步融入云计算的呢?1数据不大也包含智慧一开始这个大数据并不大。原来才有多少数据?现在大家都去看电子书,上网看新闻了,在我们80后小时候,信息量没有那么大,也就看看书、看看报,一个星期的报纸加起来才有多少字?如果你不在一个大城市,一个普通的学校的图书馆加起来也没几个书架,是后来随着信息化的到来,信息才会越来越多。首先我们来看一下大数据里面的数据,就分三种类型,一种叫结构化的数据,一种叫非结构化的数据,还有一种叫半结构化的数据。结构化的数据:即有固定格式和有限长度的数据。例如填的表格就是结构化的数据,国籍:中华人民共和国,民族:汉,性别:男,这都叫结构化数据。非结构化的数据:现在非结构化的数据越来越多,就是不定长、无固定格式的数据,例如网页,有时候非常长,有时候几句话就没了;例如语音,视频都是非结构化的数据。半结构化数据:是一些XML或者HTML的格式的,不从事技术的可能不了解,但也没有关系。其实数据本身不是有用的,必须要经过一定的处理。例如你每天跑步带个手环收集的也是数据,网上这么多网页也是数据,我们称为Data。数据本身没有什么用处,但数据里面包含一个很重要的东西,叫做信息(Information)。数据十分杂乱,经过梳理和清洗,才能够称为信息。信息会包含很多规律,我们需要从信息中将规律总结出来,称为知识(Knowledge),而知识改变命运。信息是很多的,但有人看到了信息相当于白看,但有人就从信息中看到了电商的未来,有人看到了直播的未来,所以人家就牛了。如果你没有从信息中提取出知识,天天看朋友圈也只能在互联网滚滚大潮中做个看客。有了知识,然后利用这些知识去应用于实战,有的人会做得非常好,这个东西叫做智慧(Intelligence)。有知识并不一定有智慧,例如好多学者很有知识,已经发生的事情可以从各个角度分析得头头是道,但一到实干就歇菜,并不能转化成为智慧。而很多的创业家之所以伟大,就是通过获得的知识应用于实践,最后做了很大的生意。所以数据的应用分这四个步骤:数据、信息、知识、智慧。最终的阶段是很多商家都想要的。你看我收集了这么多的数据,能不能基于这些数据来帮我做下一步的决策,改善我的产品。例如让用户看视频的时候旁边弹出广告,正好是他想买的东西;再如让用户听音乐时,另外推荐一些他非常想听的其他音乐。用户在我的应用或者网站上随便点点鼠标,输入文字对我来说都是数据,我就是要将其中某些东西提取出来、指导实践、形成智慧,让用户陷入到我的应用里面不可自拔,上了我的网就不想离开,手不停地点、不停地买。很多人说双十一我都想断网了,我老婆在上面不断地买买买,买了A又推荐B,老婆大人说,“哎呀,B也是我喜欢的啊,老公我要买”。你说这个程序怎么这么牛,这么有智慧,比我还了解我老婆,这件事情是怎么做到的呢?2数据如何升华为智慧数据的处理分几个步骤,完成了才最后会有智慧。第一个步骤叫数据的收集。首先得有数据,数据的收集有两个方式:第一个方式是拿,专业点的说法叫抓取或者爬取。例如搜索引擎就是这么做的:它把网上的所有的信息都下载到它的数据中心,然后你一搜才能搜出来。比如你去搜索的时候,结果会是一个列表,这个列表为什么会在搜索引擎的公司里面?就是因为他把数据都拿下来了,但是你一点链接,点出来这个网站就不在搜索引擎它们公司了。比如说新浪有个新闻,你拿百度搜出来,你不点的时候,那一页在百度数据中心,一点出来的网页就是在新浪的数据中心了。第二个方式是推送,有很多终端可以帮我收集数据。比如说小米手环,可以将你每天跑步的数据,心跳的数据,睡眠的数据都上传到数据中心里面。第二个步骤是数据的传输。一般会通过队列方式进行,因为数据量实在是太大了,数据必须经过处理才会有用。可系统处理不过来,只好排好队,慢慢处理。第三个步骤是数据的存储。现在数据就是金钱,掌握了数据就相当于掌握了钱。要不然网站怎么知道你想买什么?就是因为它有你历史的交易的数据,这个信息可不能给别人,十分宝贵,所以需要存储下来。第四个步骤是数据的处理和分析。上面存储的数据是原始数据,原始数据多是杂乱无章的,有很多垃圾数据在里面,因而需要清洗和过滤,得到一些高质量的数据。对于高质量的数据,就可以进行分析,从而对数据进行分类,或者发现数据之间的相互关系,得到知识。比如盛传的沃尔玛超市的啤酒和尿布的故事,就是通过对人们的购买数据进行分析,发现了男人一般买尿布的时候,会同时购买啤酒,这样就发现了啤酒和尿布之间的相互关系,获得知识,然后应用到实践中,将啤酒和尿布的柜台弄的很近,就获得了智慧。第五个步骤是对于数据的检索和挖掘。检索就是搜索,所谓外事不决问Google,内事不决问百度。内外两大搜索引擎都是将分析后的数据放入搜索引擎,因此人们想寻找信息的时候,一搜就有了。另外就是挖掘,仅仅搜索出来已经不能满足人们的要求了,还需要从信息中挖掘出相互的关系。比如财经搜索,当搜索某个公司股票的时候,该公司的高管是不是也应该被挖掘出来呢?如果仅仅搜索出这个公司的股票发现涨的特别好,于是你就去买了,其实其高管发了一个声明,对股票十分不利,第二天就跌了,这不坑害广大股民么?所以通过各种算法挖掘数据中的关系,形成知识库,十分重要。3大数据时代,众人拾柴火焰高当数据量很小时,很少的几台机器就能解决。慢慢的,当数据量越来越大,最牛的服务器都解决不了问题时,怎么办呢?这时就要聚合多台机器的力量,大家齐心协力一起把这个事搞定,众人拾柴火焰高。对于数据的收集:就IoT来讲,外面部署这成千上万的检测设备,将大量的温度、湿度、监控、电力等数据统统收集上来;就互联网网页的搜索引擎来讲,需要将整个互联网所有的网页都下载下来。这显然一台机器做不到,需要多台机器组成网络爬虫系统,每台机器下载一部分,同时工作,才能在有限的时间内,将海量的网页下载完毕。对于数据的传输:一个内存里面的队列肯定会被大量的数据挤爆掉,于是就产生了基于硬盘的分布式队列,这样队列可以多台机器同时传输,随你数据量多大,只要我的队列足够多,管道足够粗,就能够撑得住。对于数据的存储:一台机器的文件系统肯定是放不下的,所以需要一个很大的分布式文件系统来做这件事情,把多台机器的硬盘打成一块大的文件系统。对于数据的分析:可能需要对大量的数据做分解、统计、汇总,一台机器肯定搞不定,处理到猴年马月也分析不完。于是就有分布式计算的方法,将大量的数据分成小份,每台机器处理一小份,多台机器并行处理,很快就能算完。例如著名的Terasort对1个TB的数据排序,相当于1000G,如果单机处理,怎么也要几个小时,但并行处理209秒就完成了。所以说什么叫做大数据?说白了就是一台机器干不完,大家一起干。可是随着数据量越来越大,很多不大的公司都需要处理相当多的数据,这些小公司没有这么多机器可怎么办呢?4大数据需要云计算,云计算需要大数据说到这里,大家想起云计算了吧。当想要干这些活时,需要很多的机器一块做,真的是想什么时候要就什么时候要,想要多少就要多少。例如大数据分析公司的财务情况,可能一周分析一次,如果要把这一百台机器或者一千台机器都在那放着,一周用一次非常浪费。那能不能需要计算的时候,把这一千台机器拿出来;不算的时候,让这一千台机器去干别的事情?谁能做这个事儿呢?只有云计算,可以为大数据的运算提供资源层的灵活性。而云计算也会部署大数据放到它的PaaS平台上,作为一个非常非常重要的通用应用。因为大数据平台能够使得多台机器一起干一个事儿,这个东西不是一般人能开发出来的,也不是一般人玩得转的,怎么也得雇个几十上百号人才能把这个玩起来。所以说就像数据库一样,其实还是需要有一帮专业的人来玩这个东西。现在公有云上基本上都会有大数据的解决方案了,一个小公司需要大数据平台的时候,不需要采购一千台机器,只要到公有云上一点,这一千台机器都出来了,并且上面已经部署好了的大数据平台,只要把数据放进去算就可以了。云计算需要大数据,大数据需要云计算,二者就这样结合了。

2.2大数据的四V特征
 1.大量。大数据的特征首先就体现为“大”,从先Map3时代,一个小小的MB级别的Map3就可以满足很多人的需求,然而随着时间的推移,存储单位从过去的GB到TB,乃至现在的PB、EB级别。随着信息技术的高速发展,数据开始爆发性增长。社交网络(微博、推特、脸书)、移动网络、各种智能工具,服务工具等,都成为数据的来源。淘宝网近4亿的会员每天产生的商品交易数据约20TB;脸书约10亿的用户每天产生的日志数据超过300TB。迫切需要智能的算法、强大的数据处理平台和新的数据处理技术,来统计、分析、预测和实时处理如此大规模的数据。

2.多样。广泛的数据来源,决定了大数据形式的多样性。任何形式的数据都可以产生作用,目前应用最广泛的就是推荐系统,如淘宝,网易云音乐、今日头条等,这些平台都会通过对用户的日志数据进行分析,从而进一步推荐用户喜欢的东西。日志数据是结构化明显的数据,还有一些数据结构化不明显,例如图片、音频、视频等,这些数据因果关系弱,就需要人工对其进行标注。


3.高速。大数据的产生非常迅速,主要通过互联网传输。生活中每个人都离不开互联网,也就是说每天个人每天都在向大数据提供大量的资料。并且这些数据是需要及时处理的,因为花费大量资本去存储作用较小的历史数据是非常不划算的,对于一个平台而言,也许保存的数据只有过去几天或者一个月之内,再远的数据就要及时清理,不然代价太大。基于这种情况,大数据对处理速度有非常严格的要求,服务器中大量的资源都用于处理和计算数据,很多平台都需要做到实时分析。数据无时无刻不在产生,谁的速度更快,谁就有优势。

4.价值。这也是大数据的核心特征。现实世界所产生的数据中,有价值的数据所占比例很小。相比于传统的小数据,大数据最大的价值在于通过从大量不相关的各种类型的数据中,挖掘出对未来趋势与模式预测分析有价值的数据,并通过机器学习方法、人工智能方法或数据挖掘方法深度分析,发现新规律和新知识,并运用于农业、金融、医疗等各个领域,从而最终达到改善社会治理、提高生产效率、推进科学研究的效果。

2.3大数据的主要应用及行业推动力量

2.3.1大数据的主要应用
 
 一、购物营销当我们打开淘宝,京东等购物APP时,总是会发现,这些APP比我们自己还懂自己,能够未卜先知的知道我们最近需要什么。篮球迷在湖人赢了比赛的时候打开淘宝,会发现詹姆斯的球衣就在首页;一个怀孕的妈妈,打开京东,发现进口的奶粉已经在召唤她购买;一个经常听神曲的大妈,广场舞音响的推荐总在眼前。这就是商家通过手机浏览的数据分析,知道我们近期的需求,之后精准的向我们进行推销。如今人们网络购物的行为越来越频繁,网络购物的体验也越来越好。而影响网络购物体验的一个最重要的方面就是物流的速度。双11十多年前就火爆中国,但人们记忆犹新的就是双11买的物品很长时间才能拿到,少则一周,多则半个月,严重影响购物者的体验。而如今双十一的成交量增加了上百倍,但送货的速度却提升了不少。很多物品能保证晚上下单,第二天就送达,即使购买的是新疆的葡萄干,也能在24小时到货。速度提升的背后,离不开大数据的赋能。物流仓储与购物平台合作,通过分析用户的浏览数据,购物车,下定金情况,预知某一地区的购买量,进行提前备货。当用户付款之后,货物是从离用户100公里内的仓储中心发货,而不是千里之外的新疆发货。通过大数据中心的调控,物流分拣系统能最科学合理的进行装车。在智慧系统的指引下,快递员也能按照最优的线路进行高效的配送。二、交通出行如今百度地图、高德地图已经成了我们出行必不可少的工具。没了地图,很多时候我们将寸步难行。有了地图,即使在九曲回肠的复杂道路中,也可以顺利的抵达我们想去的一个网红美食店。手机地图能够做到精准的导航和实时的路况预测得益于大数据的分析。一是地图公司有自己数据采集车,前期采集了海量的数据存储在数据库中。二是每一个使用地图的用户,都共享了自己的位置,贡献了自己的数据。通过对同一时间段同一路段用户的使用情况进行分享,地图很容易就能得知哪里堵车,哪里畅通,提前告知使用者。三、政务处理大数据在助力政府的政务处理方面同样发挥着重要的作用。近年来精准扶贫是各级政府的首要工程,扶贫如何做到精准,考验着政府的执政能力。精准扶贫首先要做到的就是精准,贫困户是不是真正的贫困户,这在过往是一件很难解决的难题。上级政府只有依靠下级政府的统计上报进行拨款,于是关系户成了贫困户,真正贫困的人缺难以得到实质性的帮助。现如今有了大数据的加持,政府通过建档立卡,通过网络数据分析,对每一个贫困户进行核实。家里老人的就医记录,子女的工资水平,养殖等副业的收入等等都将进行评估,以确保精准扶贫落实到位。电信诈骗无孔不入,但当电信诈骗遇上大数据,诈骗份子也将插翅难逃。如今利用大数据分析,诈骗短信,诈骗网站很容易被识别拦截。通过分析诈骗份子的“伪基站”地址,登录网址等信息也能很快锁定诈骗份子的藏身之处。四、信用体系俗话说民无信不立,国无信不强。可见信用对于个人,对于国家都有非常重要的意义。但如何识别一个人是否有信用,却不是一件容易的事。在熟人社会里,我们可以通过一个人过往的表现,言行来判断他的信用。但在陌生人社会里,想要判定一个人是否有信用就很难了。这也影响了整个社会的运行,例如信用系统不完善,个人去银行贷款很难,网络购物也难以发展。但如今有了大数据,这些难题都迎刃而解了。例如支付宝的芝麻积分,就是通过分析用户的学历、存款、购物行为、交友特征、履约历史等等数据来赋予用户对应的分数,表示用户的信用等级,同时将特定的特权开放给对应等级的用户。现在支付宝、微信等信用数据都已并入央行主导的国民信用体系里,成为国家队。中国也正式建立了自己的信用体系,真正实现了有信用走遍天下都不怕,无信用则寸步难行。20世纪最重要的资源是石油,谁掌握了石油,谁就统治了世界。21世纪最重要的资产则是数据,谁能在数据这座金矿中挖出黄金,谁就能掌握话语权,造福社会,创造财富。

  2.3.2企业推动大数据行业发展
 
大数据利用其独特的大数据分析能力,帮助工业企业变得更有效率并提高生产率。公司可以获得大量数据,帮助制造企业减少浪费并提高生产流程的产量。通过高级分析,工业组织可以将信息可视化,识别模式并对其进行优化,以提高生产质量。大数据可以通过以下方式由制造商使用:实时监控 制造过程可以在生产过程的各个部分提供可用于优化生产质量的实时信息。预测 大数据分析可用于预测需求和生产,帮助企业提高绩效。更好的决策 通过大数据揭示的洞察力可以帮助制造商通过确定趋势并应对挑战来做出更好的决策。预防性维护 通过系统分析,制造公司可以更准确地预测系统故障,并采用预防性维护。这可以大大减少损失和昂贵维修工作的开支。质量保证 可以使用数据来检测制造过程中的错误并检测过程缺陷。分析可以提供实时警告信号,提供质量保证。定价策略 通过内部和外部来源的数据,可以开发可以增加利润的定价模型。还可以以不同的价格对产品进行需求预测。然后使用这些见解来生成准确的定价策略。 通过整合数据和应用先进的分析技术提高生产力,制造商可以提高效率,提高产品质量。在新兴市场,制造商可以通过抓住市场份额,提高利润率,开始建立竞争优势。在发达市场,化学公司可以使用大数据来降低成本,并在产品和服务方面提供更大的创新。

  2.4大数据的关键技术
 
我们之前了解了大数据现在已经达到什么地步,以及它现在主要做了哪些事情,也稍微了解一下,现在大多数的大数据公司都是怎么做的,接下来了解大数据的四个关键技术。数据采集、预处理与存储技术。数据采集,与之相关的有数据采集师这个岗位,大多数情况下是用python语言来做的。预处理我们管它叫ETL,就是信息提取,会把一些噪音去掉,然后提取一些关键信息。大多数也都是基于python+spark技术来做。存储就是HDFS技术。数据分析以及数据挖掘。这部分主要是基于sparkSQL,以及一些算法方面相关的技术。spark推荐Python或者Scala数据安全和隐私保护。这块涉及比较少,主要是基于Cobol来做的。数据的中心体系机构,下图很好的做了解释,最底下是源数据,主要通过日志、探针等方式来采取一些结构化、非结构化的数据。往上一层把数据进行提取、整合,之后加一些算法和规则,算出来特征属性,之后做清洗,然后把数据存起来。最后就是一些计算和挖掘出的一些现成的数据做数据可视化。

   2.5典型的大数据计算架构
 
数据分析工作虽然隐藏在业务系统背后,但是具有非常重要的作用,数据分析的结果对决策、业务发展有着举足轻重的作用。随着大数据技术的发展,数据挖掘、数据探索等专有名词曝光度越来越高,但是在类似于Hadoop系列的大数据分析系统大行其道之前,数据分析工作已经经历了长足的发展,尤其是以BI系统为主的数据分析,已经有了非常成熟和稳定的技术方案和生态系统,对于BI系统来说,大概的架构图如下:可以看到在BI系统里面,核心的模块是Cube,Cube是一个更高层的业务模型抽象,在Cube之上可以进行多种操作,例如上钻、下钻、切片等操作。大部分BI系统都基于关系型数据库,关系型数据库使用SQL语句进行操作,但是SQL在多维操作和分析的表示能力上相对较弱,所以Cube有自己独有的查询语言MDX,MDX表达式具有更强的多维表现能力,所以以Cube为核心的分析系统基本占据着数据统计分析的半壁江山,大多数的数据库服务厂商直接提供了BI套装软件服务,轻易便可搭建出一套Olap分析系统。不过BI的问题也随着时间的推移逐渐显露出来:BI系统更多的以分析业务数据产生的密度高、价值高的结构化数据为主,对于非结构化和半结构化数据的处理非常乏力,例如图片,文本,音频的存储,分析。由于数据仓库为结构化存储,在数据从其他系统进入数据仓库这个东西,我们通常叫做ETL过程,ETL动作和业务进行了强绑定,通常需要一个专门的ETL团队去和业务做衔接,决定如何进行数据的清洗和转换。随着异构数据源的增加,例如如果存在视频,文本,图片等数据源,要解析数据内容进入数据仓库,则需要非常复杂等ETL程序,从而导致ETL变得过于庞大和臃肿。当数据量过大的时候,性能会成为瓶颈,在TB/PB级别的数据量上表现出明显的吃力。数据库的范式等约束规则,着力于解决数据冗余的问题,是为了保障数据的一致性,但是对于数据仓库来说,我们并不需要对数据做修改和一致性的保障,原则上来说数据仓库的原始数据都是只读的,所以这些约束反而会成为影响性能的因素。ETL动作对数据的预先假设和处理,导致机器学习部分获取到的数据为假设后的数据,因此效果不理想。例如如果需要使用数据仓库进行异常数据的挖掘,则在数据入库经过ETL的时候就需要明确定义需要提取的特征数据,否则无法结构化入库,然而大多数情况是需要基于异构数据才能提取出特征。在一系列的问题下,以Hadoop体系为首的大数据分析平台逐渐表现出优异性,围绕Hadoop体系的生态圈也不断的变大,对于Hadoop系统来说,从根本上解决了传统数据仓库的瓶颈的问题,但是也带来一系列的问题:从数据仓库升级到大数据架构,是不具备平滑演进的,基本等于推翻重做。大数据下的分布式存储强调数据的只读性质,所以类似于Hive,HDFS这些存储方式都不支持update,HDFS的write操作也不支持并行,这些特性导致其具有一定的局限性。基于大数据架构的数据分析平台侧重于从以下几个维度去解决传统数据仓库做数据分析面临的瓶颈:分布式计算:分布式计算的思路是让多个节点并行计算,并且强调数据本地性,尽可能的减少数据的传输,例如Spark通过RDD的形式来表现数据的计算逻辑,可以在RDD上做一系列的优化,来减少数据的传输。分布式存储:所谓的分布式存储,指的是将一个大文件拆成N份,每一份独立的放到一台机器上,这里就涉及到文件的副本,分片,以及管理等操作,分布式存储主要优化的动作都在这一块。检索和存储的结合:在早期的大数据组件中,存储和计算相对比较单一,但是目前更多的方向是在存储上做更多的手脚,让查询和计算更加高效,对于计算来说高效不外乎就是查找数据快,读取数据快,所以目前的存储不单单的存储数据内容,同时会添加很多元信息,例如索引信息。像类似于parquet和carbondata都是这样的思想。总的来说,目前围绕Hadoop体系的大数据架构大概有以下几种:传统大数据架构之所以叫传统大数据架构,是因为其定位是为了解决传统BI的问题,简单来说,数据分析的业务没有发生任何变化,但是因为数据量、性能等问题导致系统无法正常使用,需要进行升级改造,那么此类架构便是为了解决这个问题。可以看到,其依然保留了ETL的动作,将数据经过ETL动作进入数据存储。优点:简单,易懂,对于BI系统来说,基本思想没有发生变化,变化的仅仅是技术选型,用大数据架构替换掉BI的组件。缺点:对于大数据来说,没有BI下如此完备的Cube架构,虽然目前有kylin,但是kylin的局限性非常明显,远远没有BI下的Cube的灵活度和稳定度,因此对业务支撑的灵活度不够,所以对于存在大量报表,或者复杂的钻取的场景,需要太多的手工定制化,同时该架构依旧以批处理为主,缺乏实时的支撑。适用场景:数据分析需求依旧以BI场景为主,但是因为数据量、性能等问题无法满足日常使用。流式架构在传统大数据架构的基础上,流式架构非常激进,直接拔掉了批处理,数据全程以流的形式处理,所以在数据接入端没有了ETL,转而替换为数据通道。经过流处理加工后的数据,以消息的形式直接推送给了消费者。虽然有一个存储部分,但是该存储更多的以窗口的形式进行存储,所以该存储并非发生在数据湖,而是在外围系统。优点:没有臃肿的ETL过程,数据的实效性非常高。缺点:对于流式架构来说,不存在批处理,因此对于数据的重播和历史统计无法很好的支撑。对于离线分析仅仅支撑窗口之内的分析。适用场景:预警,监控,对数据有有效期要求的情况。Lambda架构Lambda架构算是大数据系统里面举足轻重的架构,大多数架构基本都是Lambda架构或者基于其变种的架构。Lambda的数据通道分为两条分支:实时流和离线。实时流依照流式架构,保障了其实时性,而离线则以批处理方式为主,保障了最终一致性。什么意思呢?流式通道处理为保障实效性更多的以增量计算为主辅助参考,而批处理层则对数据进行全量运算,保障其最终的一致性,因此Lambda最外层有一个实时层和离线层合并的动作,此动作是Lambda里非常重要的一个动作,大概的合并思路如下:优点:既有实时又有离线,对于数据分析场景涵盖的非常到位。缺点:离线层和实时流虽然面临的场景不相同,但是其内部处理的逻辑却是相同,因此有大量荣誉和重复的模块存在。适用场景:同时存在实时和离线需求的情况。Kappa架构 Kappa架构在Lambda 的基础上进行了优化,将实时和流部分进行了合并,将数据通道以消息队列进行替代。因此对于Kappa架构来说,依旧以流处理为主,但是数据却在数据湖层面进行了存储,当需要进行离线分析或者再次计算的时候,则将数据湖的数据再次经过消息队列重播一次则可。优点:Kappa架构解决了Lambda架构里面的冗余部分,以数据可重播的超凡脱俗的思想进行了设计,整个架构非常简洁。缺点:虽然Kappa架构看起来简洁,但是施难度相对较高,尤其是对于数据重播部分。适用场景:和Lambda类似,改架构是针对Lambda的优化。Unifield架构 以上的种种架构都围绕海量数据处理为主,Unifield架构则更激进,将机器学习和数据处理揉为一体,从核心上来说,Unifield依旧以Lambda为主,不过对其进行了改造,在流处理层新增了机器学习层。可以看到数据在经过数据通道进入数据湖后,新增了模型训练部分,并且将其在流式层进行使用。同时流式层不单使用模型,也包含着对模型的持续训练。优点:Unifield架构提供了一套数据分析和机器学习结合的架构方案,非常好的解决了机器学习如何与数据平台进行结合的问题。缺点:Unifield架构实施复杂度更高,对于机器学习架构来说,从软件包到硬件部署都和数据分析平台有着非常大的差别,因此在实施过程中的难度系数更高。适用场景:有着大量数据需要分析,同时对机器学习方便又有着非常大的需求或者有规划。总结以上几种架构为目前数据处理领域使用比较多的几种架构,当然还有非常多其他架构,不过其思想都会或多或少的类似。数据领域和机器学习领域会持续发展,以上几种思想或许终究也会变得过时。 

《第三章》虚拟化技术

3.1虚拟化技术简介

虚拟化技术与多任务以及超线程技术是完全不同的。多任务是指在一个操作系统中多个程序同时并行运行,而在虚拟化技术中,则可以同时运行多个操作系统,而且每一个操作系统中都有多个程序运行,每一个操作系统都运行在一个虚拟的CPU或者是虚拟主机上;而超线程技术只是单CPU模拟双CPU来平衡程序运行性能,这两个模拟出来的CPU是不能分离的,只能协同工作。虚拟化技术也与如今VMware Workstation等同样能达到虚拟效果的软件不同,是一个巨大的技术进步,具体表现在减少软件虚拟机相关开销和支持更广泛的操作系统方面。

纯软件虚拟化解决方案存在很多限制。“客户”操作系统很多情况下是通过VMM 来与硬件进行通信,由VMM来决定其对系统上所有虚拟机的访问。(注意,大多数处理器和内存访问独立于VMM,只在发生特定事件时才会涉及VMM,如页面错误。)在纯软件虚拟化解决方案中,VMM在软件套件中的位置是传统意义上操作系统所处的位置,而操作系统的位置是传统意义上应用程序所处的位置。这一额外的通信层需要进行二进制转换,以通过提供到物理资源(如处理器、内存、存储、显卡和网卡等)的接口,模拟硬件环境。这种转换必然会增加系统的复杂性。此外,客户操作系统的支持受虚拟机环境的能力限制,这会阻碍特定技术的部署,如64位客户操作系统。在纯软件解决方案中,软件堆栈增加的复杂性意味着,这些环境难于管理,因而会加大确保系统可靠性和安全性的困难。而CPU的虚拟技术是一种硬件方案,支持虚拟技术的CPU带有特别优化过的指令。

3.1.1虚拟化技术的概念

虚拟化技术是指实现虚拟化的具体的技术性手段和方法的集合性概念。虚拟化技术可以扩大硬件的容量,简化软件的重新配置过程。虚拟化技术与多任务以及超线程技术是完全不同的。多任务是指在一个操作系统中多个程序同时一起运行,而在虚拟化技术中,则可以同时运行多个操作系统,而且每一个操作系统中都有多个程序运行,每一个操作系统都运行在一个虚拟的CPU或者是虚拟主机上;而超线程技术只是单CPU模拟双CPU来平衡程序运行性能,这两个模拟出来的CPU是不能分离的,只能协同工作。

3.1.2虚拟化技术的分类

虚拟化技术包括:

 1、CPU虚拟化

  虚拟化在计算机方面通常是指计算元件在虚拟的基础上而不是真实的基础上运行。虚拟化技术可以扩大硬件的容量,简化软件的重新配置过程。简单说来,CPU的虚拟化技术就是单CPU模拟多CPU并行,允许一个平台同时运行多个操作系统,并且应用程序都可以在相互独立的空间内运行而互不影响,从而显著提高计算机的工作效率。

  2、网络虚拟化

  网络虚拟化是目前业界关于虚拟化细分领域界定最不明确,存在争议较多的一个概念。微软眼中的“网络虚拟化”,是指虚拟专用网络(VPN)。VPN对网络连接的概念进行了抽象,允许远程用户访问组织的内部网络,就像物理上连接到该网络一样。网络虚拟化可以帮助保护IT环境,防止来自Internet的威胁,同时使用户能够快速安全的访问应用程序和数据。

  3、服务器虚拟化

  与网络虚拟化不同,服务器虚拟化却是虚拟化技术最早细分出来的子领域。根据2006年2月ForresterResearch的调查,全球范围的企业对服务器虚拟化的认知率达到了75%。三分之一的企业已经在使用或者准备部署服务器虚拟化。这个产生于20世纪60年代的技术日益显示出其重要价值。由于服务器虚拟化发展时间长,应用广泛,所以很多时候人们几乎把服务器虚拟化等同于虚拟化。

  4、存储虚拟化

  随着信息业务的不断运行和发展,存储系统网络平台已经成为一个核心平台,大量高价值数据积淀下来,围绕这些数据的应用对平台的要求也越来越高,不光是在存储容量上,还包括数据访问性能、数据传输性能、数据管理能力、存储扩展能力等等多个方面。可以说,存储网络平台的综合性能的优劣,将直接影响到整个系统的正常运行。因为这个原因,虚拟化技术又一子领域——虚拟存储技术,应运而生。

  5、应用虚拟化

  前面几种虚拟化技术,主要还专注于对硬件平台资源的虚拟优化分配,随着IT应用的日益广泛,应用虚拟化作为虚拟化家族的明日之星登上了历史舞台。2006年7月由Forrester咨询公司在美国对各种不同行业的高层IT管理人员所做的一项研究显示,当今的机构现在将应用虚拟化当作是业务上的一个必由之路,而不是一个IT决策。据统计,全世界目前至少有超过18万个机构在利用应用虚拟化技术进行集中IT管理、加强安全性和减少总体成本。

  尽管在过去十年间虚拟技术有了迅速的发展,但现实情况是,当需要使用应用系统的时候,我们仍然把自己的思维局限在电脑机箱之内。从键盘、鼠标、麦克风或扫描仪接收用户输入的设备,通常也是处理和存储数据、通过对显示器、打印机和扬声器的输出来进行响应的同一设备。然而,随着虚拟化概念的发展和变化,“应用虚拟化”成为一个正在迅速发展的市场。

3.1.3虚拟化技术的优势与劣势

虚拟化技术的优点

集中化管理
管理员不用再跑上跑下的处理每个工位上的主机,所有日常操作远程完成。复制、快照等功能更为管理员的日常维护提供了给力的工具。

提高硬件利用率
包括两个方面:1) 一般来说,企业IT的物理资源利用率都是非常低的,因为所有的物理资源必须满足当前甚至几年以后的“峰值”计算需求。而在出现虚拟化以后,可以通过可动态扩展/调整来解决“峰值”的问题,让一台物理机器上运行多个虚拟机以利用这额外的“闲时”容量,而不必增加大量的物理资源;2)在没有虚拟化之前,为了保证应用的可靠性和可用性,避免他们之间的冲突和相互影响,每个物理机一般不会运行多个重要应用,也就是说物理资源一般得不到有效的利用。而虚拟化的隔离特性很好的解决了该问题,从而也提高了硬件的利用率。

动态调整机器/资源配置
虚拟化把操作系统和应用程序与服务器硬件分离开来,提供了大大增强的灵活性。不用关闭及拆卸物理服务器,就可以为虚拟机增加或减少资源。

高可靠性
通过部署额外的功能和方案,带来具有透明负载均衡、动态迁移、快速复制等高可靠服务器应用环境,减少服务器或应用系统的停机时间,提高可靠性。
5.减低总体成本
在IT基础设施中使用此技术的最大优势之一就是不需要投资昂贵的设备,内部的专业人员就可以轻松访问各种软件和服务器。此外,虚拟化的价格也是可以接受的,因为无需直接购买设备,这意味着可以节省更多的开销。我们只需向拥有和维护所有服务器的第三方支付虚拟化服务费用,无需支付额外的成本。
6.降低终端设备数量
通过虚拟化技术将多个网管系统整合到一台主机上,可以依旧保证一套系统一台服务器。从而在不影响网管业务的使用的基础上,有效减少硬件设备的数量,降低电力资源的能耗。减少设备所需机架位置空问,避免因设备数量增长造成的机房环境改造。
除此之外,虚拟化技术在安全性,可用性,可扩展性方面也有不错的改进。

虚拟化技术的缺点

有诸多优点自然也伴随着不足之处,当然并不是每一个应用程序可以虚拟化。有些应用程序需要直接调用硬件,必须在共享的内存空间中运行,或者需要一个只与特定的设备兼容的专用的设备驱动程序。

前期高额的费用
虽然从长远来看,虚拟化技术是有经济效益的。当然考虑到更长久,我们不得不在硬件上投入更多的资金。从长远来看,肯定会节省开支,但是现实成本还是挺高的。

降低硬件利用率
这点似乎和上面所说的优点矛盾了,其实只是角度不同而已。虚拟化必然需要占用一部分资源(CPU/内存/硬盘),一个可以发挥出100%性能的物理机,加上虚拟化以后,可能只能发挥出80%的性能,所以又说它会降低资源的利用率。因此某些极度吃资源的应用可能并不适用于虚拟化的环境。

更大的错误影响面
在常规配置下,虚拟机存储于本地物理机硬盘上。真实物理机down机,上面的虚拟机将全部不可用。另外物理机硬盘损坏,一般可以恢复出绝大部分文件,但碰巧坏的是虚拟机镜像文件,结果虚拟机里面的文件可能全部损坏。

实施配置复杂,管理复杂
通常的IT管理员并不能很好的排查并解决虚拟化使用过程中的问题,例如经常碰到的VM不能启动或者卡死,没有真实物理机那么好解决。

一定的限制性
使用虚拟化技术的一个主要缺点是,它涉及到各种限制。并非所有的服务器和应用程序虚拟化是友好的,这意味着你的企业的IT基础设施的某些方面可能与虚拟化解决方案兼容。为此,应该考虑的是,仍然有不完全支持虚拟化环境的供应商。

安全性
虽说虚拟化技术在安全上已经很不错了,但是虚拟化技术自身也存在着一定的安全隐患。虚拟化过程的目的是分离虚拟化的资源,但是仍然有一些情况下,服务器意外地对其他不应该看到它们的人可见。

3.1.4虚拟化技术与云计算

一、虚拟化与云计算的关系

  虚拟化和云计算是目前信息领域比较受瞩目的一个新兴的概念,但很多人并不了解,觉得特别的模糊。虚拟化并不是云计算,这两者其实是两个不同的概念。虚拟化可以说是一种比较综合的技术,但是云计算的话,属于商业模型的一种。云计算是可以利用虚拟化的技术的,但是在本质上云计算并不是技术,和虚拟化是有区别的。关系的话,可以这样理解,云计算是总体,而虚拟化是局部,两者是相辅相成的。

  二、虚拟化和云计算的区别

  云计算和虚拟化它们的关系可以说是密切相关的,虽然如此,但这两者之间也是有区别的。虚拟化是一种服务器,所以使用云计算的时候是必须要有虚拟化才能使用的。云计算是一种基础的设施服务,他可以管理私有云、公共云和管理的托管云,是一种增值的服务。

  云计算可以说是将我们的电脑作为一个公用的资源,但是它不是一种技术或者某种产品,它属于一种基础的设备,是一个计算的概念。云计算主要是通过网络进行传递信息的,主要是为了用户之间的信息传递和服务传送。计算机是没有自服务层的,所以是不能提供某些服务器的服务的,是不可以单独的运行的。虚拟化是一种服务器,它主要是从主服务器分支出来的,本身就是一种技术一种服务器设备,云计算是需要依赖虚拟化才能运作的。

  以上,就是云计算和虚拟化的关系。云计算是一种资源,是一种以传递资源的方式运行的,主要的作用是在互联网进行资源共享和传送。但是虚拟化是一种服务器,虚拟化是一种利用主服务器分支出来的,是一种为了节约成本的虚拟服务器设备,主要是提供服务的。云计算和虚拟化相辅相成,但是二者也是不同的,所以大家要分清楚它们之间的关系。

3.2虚拟化技术原理

虚拟化技术实现原理:虚拟化概念很早就已出现。简单来说,虚拟化就是使用某些程序,并使其看起来类似于其他程序的过程。将这个概念应用到计算机系统中可以让不同用户看到不同的单个系统(例如,一台计算机可以同时运行Linux 和 Microsoft? Windows?)。这通常称为全虚拟化(full virtualization)。虚拟化也可以使用更加复杂的格式,其中单个计算机看上去具有多个架构(对于一个用户来说,它是一个标准的 x86 平台;对于另外一个用户来说,它是 IBM Power PC? 平台)。这种虚拟化形式通常被称为 硬件仿真。最后,更加简单的一种虚拟化是操作系统虚拟化,其中一台计算机可以运行相同类型的多个操作系统。这种虚拟化可以将一个操作系统的多个服务器隔离开来(这意味着全都必须使用相同类型和版本的操作系统)。虚拟化技术的工作原理:虚拟化解决方案的底部是要进行虚拟化的机器。这台机器可能直接支持虚拟化,也可能不会直接支持虚拟化;那么就需要系统管理程序 层的支持。系统管理程序,或称为 VMM,可以看作是平台硬件和操作系统的抽象化。在某些情况中,这个系统管理程序就是一个操作系统;此时,它就称为主机操作系统.系统管理程序之上是客户机操作系统,也称为虚拟机(VM)。这些 VM 都是一些相互隔离的操作系统,将底层硬件平台视为自己所有。但是实际上,是系统管理程序为它们制造了这种假象。目前使用虚拟化解决方案的问题是,并非所有硬件都可以很好地支持虚拟化。较老的 x86 处理器根据执行范围对特定指令会产生不同结果。这就产生了一个问题,因为系统管理程序应该只能在一个最受保护的范围中执行。由于这个原因,诸如 VMWare 之类的虚拟化解决方案会提前扫描要执行的代码,从而将这些指令替换为一些陷阱指令(trap instruction),这样系统管理程序就可以正确地处理它们。Xen 可以支持一种协作的虚拟化方法,它不需要任何修改,因为客户机知道自己正在进行虚拟化,并已经进行了修改。KVM 会简单地忽略这个问题,如果您希望进行虚拟化,就强制必须在更新的硬件上运行。

3.2.1虚拟机技术原理

通过软件模拟的具有完整硬件系统功能的、运行在一个完全隔离环境中的完整计算机系统。通过虚拟机软件,你可以在一台物理计算机上模拟出一台或多台虚拟的计算机,这些虚拟机完全就像真正的计算机那样进行工作,例如你可以安装操作系统、安装应用程序、访问网络资源等等。对于你而言,它只是运行在你物理计算机上的一个应用程序,但是对于在虚拟机中运行的应用程序而言,它就像是在真正的计算机中进行工作。因此,当我在虚拟机中进行软件评测时,可能系统一样会崩溃,但是,崩溃的只是虚拟机上的操作系统,而不是物理计算机上的操作系统,并且,使用虚拟机的“Undo”(恢复)功能,我可以马上恢复虚拟机到安装软件之前的状态。目前流行的虚拟机软件有VMware和Virtual PC,它们都能在Windows系统上虚拟出多个计算机,用于安装Linux、OS/2、FreeBSD等其他操作系统。微软在2003年2月份收购Connectix后,很快发布了Microsoft Virtual PC 2004。但出于种种考虑,新发布的Virtual PC 2004已不再明确支持Linux、FreeBSD、NetWare、Solaris等操作系统,只保留了OS/2,如果要虚拟一台Linux计算机,只能自己手工设置。相比而言,VMware不论是在多操作系统的支持上,还是在执行效率上,都比Virtual PC 2004明显高出一筹,这也是本文选择它的理由之一。电脑一台变两台,学用Linux不再有后顾之忧VMware 4.5有Workstation、GSX server等多种版本,其中Windows版的Workstation应用最广,本文即以它为基础进行各种实战演习。虚拟机的概念比较宽泛,通常人们接触到的虚拟机概念有VMware那样的硬件模拟软件,也有JVM这样的介于硬件和编译程序之间的软件。这里所指的是后者。虚拟机是一个抽象的计算机,和实际的计算机一样,具有一个指令集并使用不同的存储区域。它负责执行指令,还要管理数据、内存和寄存器。这台虚拟的机器在任何平台上都提供给编译程序一个的共同的接口。编译程序只需要面向虚拟机,生成虚拟机能够理解的代码,然后由解释器来将虚拟机代码转换为特定系统的机器码执行。

你可能感兴趣的:(云计算,big,data,大数据)