专治不明觉厉——云计算与大数据(转)

大数据与分布式 fireling 1167℃ 0评论

云计算(Cloud Computing)

云计算这个名词来自于Google,而最早的云计算产品来自于Amazon。有意思的是,Google在2006年正式提出云计算这个名词的时候,Amazon的云计算产品AWS(Amazon Web Service)已经正式运作差不多4年了。因此,有人认为,Google对云计算的最大贡献是为它起了个好名字,Amazon才是云计算的真正开拓者。

云计算是一个新名词,却不是一个新概念。云计算这个概念从互联网诞生以来就一直存在。很久以前,人们就开始购买服务器存储空间,然后把文件上传到服务器存储空间里保存,需要的时候再从服务器存储空间里把文件下载下来。这和Dropbox或百度云的模式没有本质上的区别,它们只是简化了这一系列操作而已。

云计算的意义并不在于它的概念,而在于它所代表的理念。这种全新的理念被称作“X即服务”(X as a Service)。根据美国国家标准和技术研究院对云计算的定义,云计算可以分为三种:软件即服务(Software as a Service,缩写SaaS),平台即服务(Platform as a Service,缩写PaaS),基础架构即服务(Infrastructure as a Service,缩写IaaS)。

软件即服务(Software as a Service,缩写SaaS)

软件即服务是普通消费者可以感知到的云计算,它的代表有Dropbox,还有国内用户熟悉的百度云、腾讯微云等。这种云计算最大的特征就是消费者并不购买任何实体的产品,而是购买具有与实体产品同等功能的服务。

以前,我们是花钱购买的是服务器上的存储空间。现在,我们花钱购买的是Dropbox的存储服务。表面上看,两者没有实际的区别。但是换一个角度来看,两者却完全不同。以前,我们花钱购买服务器上的存储空间,假设是空间容量是10G,我们是真正的买到了服务器上的10G空间。如果我们不上传文件的话,那么服务器上的这10G空间就是空的。现在,我们购买Dropbox的存储服务,假设空间容量还是10G,我们却并没有真正的买到Dropbox服务器上10G的空间,我们买到的是10G空间的服务。也就是说,如果我们上传文件,Dropbox会将文件分开放在任何地方的任何服务器上,如果我们不上传文件,Dropbox的服务器上就根本没有属于我们的任何空间。

平台即服务(Platform as a Service,缩写PaaS)

与软件即服务不同,平台即服务是面向开发者的云计算。这种云计算最大的特征是它自带开发环境,并向开发者提供开发工具包。它的代表有Google的GAE(Google App Engine),还有国内的百度的BAE、新浪的SAE等。

平台即服务与软件即服务之间可以相互转换。如果是消费者,购买Dropbox的服务,那Dropbox就是软件即服务。如果是开发者,利用Dropbox提供的开发包借助Dropbox的服务开发自己的服务,那么Dropbox本身就是平台即服务,构筑在Dropbox之上的开发者的服务就是软件即服务。

以前,开发者如果要搭建一个网站,需要做很多准备工作,比如购买服务器,安装操作系统,搭建开发环境等等。现在,开发者如果购买平台即服务云计算,就可以省去上面费时费力的准备工作,直接进行网站的开发。不仅如此,开发者还可以使用各种现成的服务,比如GAE会向开发者提供Google内部使用的先进的开发工具和领先的大数据技术。这一切都使得网站开发变得比以前轻松很多,这也是云计算时代互联网更加繁荣的原因之一。

基础架构即服务(Infrastructure as a Service,缩写IaaS)

基础架构即服务一般面向的是企业用户,它的代表有Amazon的AWS(Amazon Web Service),还有国内的阿里云、盛大云等。

这种云计算最大的特征在于,它并不像传统的服务器租赁商一样出租具体的服务器实体,它出租的是服务器的计算能力和存储能力。AWS将Amazon计算中心的所有的服务器的计算能力和存储能力整合成一个整体,然后将其划分为一个个虚拟的实例,每一个实例代表着一定的计算能力和存储能力。购买AWS云计算服务的公司就以这些实例就作为计量单位。

基础架构即服务与平台即服务有显著的区别,基础架构即服务提供的只有计算能力和存储能力的服务,平台即服务提供的除了计算能力和存储能力的服务,还提供给开发者的完备的开发工具包和配套的开发环境。也就是说,开发者使用平台即服务时,可以直接开始进行开发工作。而使用基础架构即服务时,则必须先进行如安装操作系统、搭建开发环境等准备工作。

基础架构即服务是云计算的基石,平台即服务和软件即服务构建在它的上面,分别为开发者和消费者提供服务,而它本身则为大数据服务。

公有云(Public Cloud)和私有云(Private Cloud)

云计算有两种主要的部署方式,公有云和私有云。

公有云,就是说它的服务器是部署在互联网上的,人们可以通过互联网访问它。目前,大部分的云计算都是公有云。

私有云,就是说它的服务器是部署在防火墙内的局域网内,只有局域网内部的人才能访问它。相比公有云,私有云需要由使用者自己搭建云计算的基础架构,在获得了更大的控制权的同时,也增加了开发难度。目前,业内主要的的解决方案是由美国国家航空航天局和Rackspace合作研发的OpenStack。通过OpenStack,任何人都可以自行建立和提供云计算服务。不过,OpenStack主要还是被用来在企业内部建立云计算。

大数据(Big Data)

大数据,官方定义是指那些数据量特别大、数据类别特别复杂的数据集,这种数据集无法用传统的数据库进行存储,管理和处理。大数据的主要特点为数据量大(Volume),数据类别复杂(Variety),数据处理速度快(Velocity)和数据真实性高(Veracity),合起来被称为4V。

大数据中的数据量非常巨大,达到了PB级别。而且这庞大的数据之中,不仅仅包括结构化数据(如数字、符号等数据),还包括非结构化数据(如文本、图像、声音、视频等数据)。这使得大数据的存储,管理和处理很难利用传统的关系型数据库去完成。在大数据之中,有价值的信息往往深藏其中。这就需要对大数据的处理速度要非常快,才能短时间之内就能从大量的复杂数据之中获取到有价值的信息。在大数据的大量复杂的数据之中,通常不仅仅包含真实的数据,一些虚假的数据也混杂其中。这就需要在大数据的处理中将虚假的数据剔除,利用真实的数据来分析得出真实的结果。

大数据分析(Big Data Analysis)

大数据,表面上看就是大量复杂的数据,这些数据本身的价值并不高,但是对这些大量复杂的数据进行分析处理后,却能从中提炼出很有价值的信息。对大数据的分析,主要分为五个方面:可视化分析(Analytic Visualization)、数据挖掘算法(Date Mining Algorithms)、预测性分析能力(Predictive Analytic Capabilities)、语义引擎(Semantic Engines)和数据质量管理(Data Quality Management)

可视化分析是普通消费者常常可以见到的一种大数据分析结果的表现形式,比如说百度制作的“百度地图春节人口迁徙大数据”就是典型的案例之一。可视化分析将大量复杂的数据自动转化成直观形象的图表,使其能够更加容易的被普通消费者所接受和理解。

数据挖掘算法是大数据分析的理论核心,其本质是一组根据算法事先定义好的数学公式,将收集到的数据作为参数变量带入其中,从而能够从大量复杂的数据中提取到有价值的信息。著名的“啤酒和尿布”的故事就是数据挖掘算法的经典案例。沃尔玛通过对啤酒和尿布购买数据的分析,挖掘出以前未知的两者间的联系,并利用这种联系,提升了商品的销量。亚马逊的推荐引擎和谷歌的广告系统都大量使用了数据挖掘算法。

预测性分析能力是大数据分析最重要的应用领域。从大量复杂的数据中挖掘出规律,建立起科学的事件模型,通过将新的数据带入模型,就可以预测未来的事件走向。预测性分析能力常常被应用在金融分析和科学研究领域,用于股票预测或气象预测等。

语义引擎是机器学习的成果之一。过去,计算机对用户输入内容的理解仅仅停留在字符阶段,不能很好的理解输入内容的意思,因此常常不能准确的了解用户的需求。通过对大量复杂的数据进行分析,让计算机从中自我学习,可以使计算机能够尽量精确的了解用户输入内容的意思,从而把握住用户的需求,提供更好的用户体验。苹果的Siri和谷歌的Google Now都采用了语义引擎。

数据质量管理是大数据在企业领域的重要应用。为了保证大数据分析结果的准确性,需要将大数据中不真实的数据剔除掉,保留最准确的数据。这就需要建立有效的数据质量管理系统,分析收集到的大量复杂的数据,挑选出真实有效的数据。

分布式计算(Distributed Computing)

对于如何处理大数据,计算机科学界有两大方向:第一个方向是集中式计算,就是通过不断增加处理器的数量来增强单个计算机的计算能力,从而提高处理数据的速度。第二个方向是分布式计算,就是把一组计算机通过网络相互连接组成分散系统,然后将需要处理的大量数据分散成多个部分,交由分散系统内的计算机组同时计算,最后将这些计算结果合并得到最终的结果。尽管分散系统内的单个计算机的计算能力不强,但是由于每个计算机只计算一部分数据,而且是多台计算机同时计算,所以就分散系统而言,处理数据的速度会远高于单个计算机。

过去,分布式计算理论比较复杂,技术实现比较困难,因此在处理大数据方面,集中式计算一直是主流解决方案。IBM的大型机就是集中式计算的典型硬件,很多银行和政府机构都用它处理大数据。不过,对于当时的互联网公司来说,IBM的大型机的价格过于昂贵。因此,互联网公司的把研究方向放在了可以使用在廉价计算机上的分布式计算上。

服务器集群(Server Cluster)

服务器集群是一种提升服务器整体计算能力的解决方案。它是由互相连接在一起的服务器群所组成的一个并行式或分布式系统。服务器集群中的服务器运行同一个计算任务。因此,从外部看,这群服务器表现为一台虚拟的服务器,对外提供统一的服务。

尽管单台服务器的运算能力有限,但是将成百上千的服务器组成服务器集群后,整个系统就具备了强大的运算能力,可以支持大数据分析的运算负荷。Google,Amazon,阿里巴巴的计算中心里的服务器集群都达到了5000台服务器的规模。

大数据的技术基础:MapReduce、Google File System和BigTable

2003年到2004年间,Google发表了MapReduce、GFS(Google File System)和BigTable三篇技术论文,提出了一套全新的分布式计算理论。

MapReduce是分布式计算框架,GFS(Google File System)是分布式文件系统,BigTable是基于Google File System的数据存储系统,这三大组件组成了Google的分布式计算模型。

Google的分布式计算模型相比于传统的分布式计算模型有三大优势:首先,它简化了传统的分布式计算理论,降低了技术实现的难度,可以进行实际的应用。其次,它可以应用在廉价的计算设备上,只需增加计算设备的数量就可以提升整体的计算能力,应用成本十分低廉。最后,它被Google应用在Google的计算中心,取得了很好的效果,有了实际应用的证明。

后来,各家互联网公司开始利用Google的分布式计算模型搭建自己的分布式计算系统,Google的这三篇论文也就成为了大数据时代的技术核心。

主流的三大分布式计算系统:Hadoop,Spark和Storm

由于Google没有开源Google分布式计算模型的技术实现,所以其他互联网公司只能根据Google三篇技术论文中的相关原理,搭建自己的分布式计算系统。

Yahoo的工程师Doug Cutting和Mike Cafarella在2005年合作开发了分布式计算系统Hadoop。后来,Hadoop被贡献给了Apache基金会,成为了Apache基金会的开源项目。Doug Cutting也成为Apache基金会的主席,主持Hadoop的开发工作。

Hadoop采用MapReduce分布式计算框架,并根据GFS开发了HDFS分布式文件系统,根据BigTable开发了HBase数据存储系统。尽管和Google内部使用的分布式计算系统原理相同,但是Hadoop在运算速度上依然达不到Google论文中的标准。

不过,Hadoop的开源特性使其成为分布式计算系统的事实上的国际标准。Yahoo,Facebook,Amazon以及国内的百度,阿里巴巴等众多互联网公司都以Hadoop为基础搭建自己的分布式计算系统。

Spark也是Apache基金会的开源项目,它由加州大学伯克利分校的实验室开发,是另外一种重要的分布式计算系统。它在Hadoop的基础上进行了一些架构上的改良。Spark与Hadoop最大的不同点在于,Hadoop使用硬盘来存储数据,而Spark使用内存来存储数据,因此Spark可以提供超过Hadoop100倍的运算速度。但是,由于内存断电后会丢失数据,Spark不能用于处理需要长期保存的数据。

Storm是Twitter主推的分布式计算系统,它由BackType团队开发,是Apache基金会的孵化项目。它在Hadoop的基础上提供了实时运算的特性,可以实时的处理大数据流。不同于Hadoop和Spark,Storm不进行数据的收集和存储工作,它直接通过网络实时的接受数据并且实时的处理数据,然后直接通过网络实时的传回结果。

Hadoop,Spark和Storm是目前最重要的三大分布式计算系统,Hadoop常用于离线的复杂的大数据处理,Spark常用于离线的快速的大数据处理,而Storm常用于在线的实时的大数据处理。

转载请注明:宁哥的小站 » 专治不明觉厉——云计算与大数据(转)

喜欢 (5)

您必须 登录 才能发表评论!