海量数据处理方案1背景我们生活在一个数据时代:(1)每天有10TB的视频数据被上传到世界上最大的视频分享网站Youtube上。(2)美国的纽约证劵交易所每天大约产生1TB的交易数据。(3)中国深圳市拥有20万个交通监控摄像头,每天产生的数据大于1PB。(4)瑞士日内瓦附近的大型强子对撞机,每年大约产生15PB的数据。……已经很难衡量现今的社会中存储的电子数据总量,但是据IDC(InternetDataCenter)估计,2006年“数字全球”项目(digitaluniverse)的数据总量为0.18ZB,并且预测到2011年这个数字将达到1.8ZB,为2006年的10倍。1ZB相当于10的21次方字节,或者相当于1000EB、1000000PB,或者大家更为熟悉的10亿TB。这相当于世界上每个人一个磁盘驱动器的数量级[1]。如图1所示[2],股票交易、商品零售、交通、通信、生产、Web、音像业等多数据源使得数据类型复杂化,包括有结构、无结构(文本、图像、音频、视频等)数据。数据本身也越来越趋于复杂化、高维化。图1海量数据及其复杂类型技术的进步已经使得数据存储变得相对便宜,带宽相对充足,导致了这一系列的海量数据被存储下来,继而在大数据集上的建模和仿真。这样的大数据存储普遍存在于一个多样化的应用领域中,包括科学研究(生物信息,气候变化)。从这样海量数据中提取珍贵知识的挑战,随着多类型数据、多数据源、多种多样的规模,越来越使人变得畏缩,更不要提最终目标是去实时处理。有句话说得好:“算法再好,通常也难敌更多的数据。”意思就是说对于某些问题(譬如基于既往偏好生成的电影和音乐推荐),不论你的算法有多厉害,它们总会在更多的数据面前变得无能为力(更不用说没有优化过的算法)。为了剖析与研究问题,科学与技术目标可归为下面主要的三种:管理数据爆炸性、从海量数据中提取知识、归纳数据使得人类易于理解和反应。如图2所示①。图2海量数据的处理过程那么何为海量数据呢?目前还没有一个统一的定义。Joy[3]指出,令单个计算节点无法完成存储和处理的数据,即可称为海量数据。显然,“海量”是一个动态的概率,它随着单机计算能力的提升和算法的改进而改变。本文认为,目前称作海量的数据应具有以下特性:(1)数据量大:通常达到TB级的数据。(2)数据类型复杂:面对的海量数据常常不是单一类型的数据——字符数据、文本数据、多媒体数据,甚至是源源不断的数据流等。(3)多模态数据:对于一个事物,得到的数据可能是通过不同的方式或角度收集到的,如多模态的视频数据,包括字幕、音频和图像等模态。处理这类数据时,需要将多种模态结合2挑战与解决方法面临如此海量的数据,首先摆在眼前的问题就是:这种数据的大小已经超出了单个机器的负载能力。利用机器集群和并行化技术,是解决问题的一个有效途径。以下几种方法是2.1高性能计算从广义上讲,高性能计算(HPC,HighPerformanceComputing)是将作业分配给一个机器集群,这些机器访问共享文件系统,由一个存储区网络(SAN,StorageAreaNetwork)进行管理,非常适用于以计算密集型为主的作业。但当节点需要访问的数据流很大时(比如数百GB的数据),就会产生一个问题:因为网络带宽成为“瓶颈”,所以计算节点闲置下来。[1]这种计算,主要是指应用于科学与工程的、以高性能计算机为平台的大规模并行计算。它已成为一项学①科——大规模科学与工程计算。而大规模并行计算也已成为研究科学与工程技术的一种新的手段和方式;采用这种手段和方式的科学研究与工程技术研究设计,称为“计算方式的科学与工程”(ComputationalScienceandEngineering)。例如,著名的波音777飞机的设计,基本上是依靠高性能计算机的“无纸设计”,它可以大量节省传统设计技术中的昂贵的风洞实验,设计时间也大大缩短。[3]高性能计算为平台的大规模并行计算,在我国也取得很大的成果,并且有力地推动交叉学科的发展。在清华大学研制的THNPSC-1和THNPSC-2,以及在上海大学研制的“自强2000”等高性能计算机平台上,已有很多实际经验。如与化学专家进行的“高分子链”的研究计算,与化工专家进行的“石油化工超临界化学反应”的研究计算,与机械铸工专家进行的“模具冲模流体场”研究计算。[4]目前,国内外在高性能计算机系统中,最广泛使用的并行编程环境是MPI(MessagePassingInterface),它已成为国际上的一种并行程序的标准。MPI具有移植性好、功能强大、效率高等多种优点,而且有多重不同的免费、高效、使用的实现版本,几乎所有的并行计算机厂商都提供对它的支持,这是其他所有的并行编程环境都无法比拟的。[4]2.2网格计算通过利用大量异构计算机(通常为桌面)的未用资源(CPU周期和磁盘存储),将其作为嵌入在分布式电信基础设施中的一个虚拟的计算机集群,为解决大规模的计算问题提供了一个模型。网格计算的焦点放在支持跨管理域计算的能力,使它区别于传统的计算机集群或传统的分布式计算。IanFoster在《什么是网格?判断是否网格的三个标准》一文中,限定网格必须同时满足三个条件:①在非集中控制的环境中协同使用资源;②使用标准的、开放的和通用的协议和接口(IanFoster认为目前只有Globus才算得上标准协议);③提供非平凡的服务。这三个条件非常严格,像P2P(PeertoPeer)、SUNGridEngine、Condor、Entropia、MultiCluster等都被排除在网格之外。但并不是所有人都同意他的观点,例如,有许多人赞同广义的网格概念,称之为巨大全球网格(GGG,GreatGlobalGrid),它不仅包括计算网格、数据网格、信息网格、知识网格、商业网格,还包括一些已有的网络计算模式,例如P2P、寄生计算等。可以这样认为,IanFoster赞成狭义的“网格观”,而GGG是一种广义的“网格观”。[5]不管是狭义还是广义的网格,其目的不外乎是要利用互联网把分散在不同地理位置的电脑组成一台“虚拟的超级计算机”,实现计算资源、存储资源、数据资源、信息资源、软件资源、通信资源、知识资源、专家资源等的全面共享。其中每台参与的计算机就是一个节点,就像摆放在围棋棋盘上的棋子,而棋盘上纵横交错的线条对应于现实世界的网络,所以整个系统就叫做“网格”。在网格上做计算,就像下围棋一样,不是单个棋子完成,而是所有棋子互相配合形成合力完成。传统互联网实现了计算机硬件的连通,Web实现了网页的连通,而网格试图实现互联网上所有资源的全面连通。在我国已经完成的网格研究项目主要有清华大学的先进计算基础设施(ACI,AdvancedComputationalInfrastructure)和以中国科学院计算为主的国家高性能计算环境(NHPCE,NationalHighPerformanceComputingEnvironment)。在ACI系统中,除清华大学研制的高性能计算机THNPSC-2与上海大学研制的高性能计算机“自强2000”通过高速网络连接在一起之外,还连接了4个应用节点。这6个地理位置不同的网格节点可以同时召开网络会议。除此之外还开发了相应的中间件,可以构成跨地区、跨学科的“虚拟实验室”研究环境。ACI系统具有一套健全的资源管理系统、任务管理系统、用户管理系统及安全服务与监控系统。[6]网格系统是一种资源共享模型,资源提供者亦可以成为资源消费者,网格侧重研究的是如何将分散的资源组合成动态虚拟组织。它以计算为中心,计算资源和存储资源分布在因特网的各个角落,不强调任务所需的计算和存储资源同处一地。由于网络带宽的限制,网格计算中的数据传输时间占总运行时间的很大部分。[7]2.3云计算在数据密集型计算中,数据的大小好比性能帐篷的长木棍。大数据曾经是科学和工程HPC环境的专属,现在贯穿大型数据中心的数据范围。无论是在对电子商务欺诈检测,通过更好的情报搜集改善安全性;还是在Web上的3D高清晰度电视或电影,数据密集型计算的时代已经来到。[8]如图3所示[8],可把数据密集型计算想像成一个过滤过程。它从大量数据开始,到最后做出决策(是或否、买或不买、生或死)结束。它需要考虑到大量有结构或无结构的数据,并通过一系列的过程转化成有用的信息,提高智力、知识和经验等洞察力,并最终能更好地做出决策。[8]解决数据密集型计算的有效方法是将计算移向数据,而非传统的将数据移向计算。云计算是解决这一问题的较好手段。如HadoopMapReduce框架,利用分布式的计算节点组成分布式的存储环境,数据被分割成多个块存储,计算时各个计算节点只需利用自己本地数据,而不需大量传输数据。[1,9]很多公司对云计算都有了自己的见解与行动,如:图3数据密集型计算Amazon:Amazon以在线书店和电子零售业起家,如今已在业界享有盛名。它最新的业务与云计算有关。亚马逊的云名为亚马逊网络服务(AWS,AmazonWebServices),主要由四块核心服务组成:简单存储服务(S3,SimpleStorageService)、弹性计算云(EC2,ElasticComputeCloud)、简单排列服务(SimpleQueuingService)以及尚处于测试阶段的SimpleDB。也可以说,亚马逊现在提供的是可以通过网络访问的存储、计算机处理、信息排队和数据库管理系统接入式服务。Google:Google围绕因特网搜索创建了一种超动力商业模式。如今又以应用托管、企业搜索以及其他更多形式向企业开放了它们的“云”。Google推出了谷歌应用软件引擎(GAE,GoogleAppEngine),这种服务让开发人员可以编译基于Python的应用程序,并可免费使用Google的基础设施进行托管。Salesforce:Salesforce是软件即服务厂商的先驱,它凭借其旗舰级服务工具CRM,一开始提供的是可通过网络访问的销售力量自动化应用软件。其下一目标是平台即服务。Salesforce公司正在建造自己的网络应用软件平台shijiexuexi,这一平台可作为其他企业自身软件服务的基础。shijiexuexi包括关系数据库、用户界面选项、企业逻辑以及一个名为Apex的集成开发环境。2010年12月,企业云计算公司Salesforce.com(NYSE:CRM)和IT管理领域的领导者BMC软件公司(NASDAQ:BMC)宣布推出全新云产品RemedyForce。RemedyForce建立在Salesforce.com的企业云计算平台Force.com之上,是两家公司共同推出的全新战略化云产品,结合了这两大市场领先企业的优势。RemedyForce解决方案将为企业提供一种简单快捷的途径来改变企业对IT服务管理的认知,并实现包括简化IT支持流程和降低成本在内的切实成果。微软:微软则关注“软件加服务”(softwareplusservices)。微软在2010年实现了产品向云计算的全面转型,发展现有产品,创建新的基于云的产品并构建基础设施,以便在全球范围内支持云服务。目前,几乎所有微软产品和服务都已可利用云服务(Office365、OfficeWebApplication、WindowsServer以及WindowsAzure、Xbox和XboxLive等)。在线或托管版本的常用应用程序:大部分都有云版本,其中包括Windows、SQL、Exchange、SharePoint等。中国移动:云计算作为中国移动蓝海战略的一个重要部分,由移动研究院组织力量,联合中国科学院计算机技术研究所,着手起步了一个叫做BigCloud的项目。中国移动的BigCloud建设包括两个方向,一是基础架构建设;二是平台及服务的建设。基于这两方面之上,中国移动将推出“软件即服务”,以便中小企业减少IT投入成本和IT运营复杂性,同时提供办公自动化解决