海量数据处理.docx
《海量数据处理.docx》由会员分享,可在线阅读,更多相关《海量数据处理.docx(10页珍藏版)》请在冰豆网上搜索。
海量数据处理
海量数据处理
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]
这种计算,主要是指应用于科学与工程的、以高性能计算机为平台的大规模并行计算。
它已成为一项学①http:
//dicomputing.pnl.gov/articles/t/h/e/The_Initiative_04bb.html
科——大规模科学与工程计算。
而大规模并行计算也已成为研究科学与工程技术的一种新的手段和方式;采用这种手段和方式的科学研究与工程技术研究设计,称为“计算方式的科学与工程”(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月,企业云计算公司S(NYSE:
CRM)和IT管理领域的领导者BMC软件公司(NASDAQ:
BMC)宣布推出全新云产品RemedyForce。
RemedyForce建立在S的企业云计算平台F之上,是两家公司共同推出的全新战略化云产品,结合了这两大市场领先企业的优势。
RemedyForce解决方案将为企业提供一种简单快捷的途径来改变企业对IT服务管理的认知,并实现包括简化IT支持流程和降低成本在内的切实成果。
微软:
微软则关注“软件加服务”(softwareplusservices)。
微软在2010年实现了产品向云计算的全面转型,发展现有产品,创建新的基于云的产品并构建基础设施,以便在全球范围内支持云服务。
目前,几乎所有微软产品和服务都已可利用云服务(Office365、OfficeWebApplication、WindowsServer以及WindowsAzure、Xbox和XboxLive等)。
在线或托管版本的常用应用程序:
大部分都有云版本,其中包括Windows、SQL、Exchange、SharePoint等。
中国移动:
云计算作为中国移动蓝海战略的一个重要部分,由移动研究院组织力量,联合中国科学院计算机技术研究所,着手起步了一个叫做BigCloud的项目。
中国移动的BigCloud建设包括两个方向,一是基础架构建设;二是平台及服务的建设。
基于这两方面之上,中国移动将推出“软件即服务”,以便中小企业减少IT投入成本和IT运营复杂性,同时提供办公自动化解决方案。
总的来说云计算大概有下面几大形式。
(1)SAAS(软件即服务):
这种类型的云计算通过浏览器把程序传给成千上万的用户。
在用户看来,这样会省去在服务器和软件授权上的开支;从供应商角度来看,这样只需要维持一个程序即可,能够减少成本。
shijiexuexi是迄今为止这类服务最为出名的公司。
SAAS在人力资源管理程序和ERP中比较常用。
GoogleApps和ZohoOffice也是类似的服务。
(2)实用计算(UtilityComputing):
实用计算直到最近才在shijiexuexi、Sun、IBM和其他提供存储服务和虚拟服务器的公司中新生。
这种云计算是为IT行业创造虚拟的数据中心,使得其能够把内存、I/O设备、存储和计算能力集中起来成为一个虚拟的资源池,为整个网络提供服务。
(3)网络服务(WebService):
与SAAS关系密切,网络服务提供者能够提供API让开发者开发更多基于互联网的应用,而不是提供单机程序。
〖JP2〗比如在网络游戏上,云计算也有相关应用。
《醉·逍遥》开创了云计算在网络游戏领域创新运用的先例,它采用云计算多元化的计算模式,将传统计算机技术与网络技术发展融合,使游戏数据更加高效安全地运作计算,从而优化了游戏运算速度,让人们能够更加顺畅地体验游戏世界。
〖JP〗
(4)平台即服务(PaaS):
这种形式下,云计算把开发环境作为一种服务来提供。
用户可以使用中间商的设备来开发自己的程序,并通过互联网和其服务器传到用户手中。
(5)管理服务提供商(MSP):
最古老的云计算运用之一。
这种应用更多的是面向IT行业而不是终端用户,常用于邮件病毒扫描、程序监控等。
(6)商业服务平台:
SAAS和MSP的混合应用。
该类云计算为用户和提供商之间的互动提供了一个平台。
比如用户个人开支管理系统能够根据用户的设置来管理其开支,并协调其订购的各种服务。
(7)互联网整合:
将互联网上提供类似服务的公司整合起来,以便用户能够更方便地比较和选择自己的服务供应商。
3 未来的挑战
3.1海量数据的存储与管理
要进行海量数据处理,必然要提供存储服务。
比如,云计算服务当前垄断在私人机构(企业)手中,而他们仅仅能够提供商业信用。
对于政府机构、商业机构(特别像银行这样持有敏感数据的商业机构),选择云计算服务应保持足够的警惕。
一旦商业用户大规模使用私人机构提供的云计算服务,无论其技术优势有多强,都不可避免地让这些私人机构以“数据(信息)”的重要性挟制整个社会。
对于信息社会而言,“信息”是至关重要的。
另一方面,云计算中的数据对于数据所有者以外的其他用户,云计算用户是保密的,但是对于提供云计算的商业机构而言确实毫无秘密可言。
这就像常人不能监听别人的电话,但是在通讯公司内部,可以随时监听任何电话。
所有这些潜在的危险,是商业机构和政府机构选择云计算服务,特别是国外机构提供的云计算服务时,不得不考虑的一个重要的前提。
如此看来,安全性便是云计算面临的一大挑战。
①
海量数据存储与管理的可靠性、可拓展性。
海量数据的处理要讲究效率,要能够应对所有可能的数据,要能够产生可操控的结果,且尽可能地降低代价,对非专家也要易于使用。
在现实世界的应用中,要能够易于整合到一个全局系统中。
管理要面临服务可信问题,以及安全问题(数据完全、过程安全、公共安全等)。
要能够应对用户的不同需求,可拓展性很重要,还要考虑容错等问题,可靠性也是处理海量数据不可忽略的问题。
3.2海量数据挖掘
面对海量的数据,传统的经典挖掘算法不再适用。
由第一部分的研究目标可知,从海量数据中提取知识、归纳数据使得人类易于理解和反应,即如何针对海量的数据,挖掘出有用的知识供使用,便对研究相应的挖掘算法,提出了极具挑战性的问题。
由于数据量远远超出了单机的负载能力,那么存储与访问上便需要更先进的索引技术;进行数据挖掘时,
①
便需要利用高性能计算或云计算等手段,简单讲就是要并行化。
那么一个算法,如何设计让其在多个机器上运行,并保证其正确性与时间效率,便是值得研究的问题。
具体说,什么样的应用目标适合采用什么样的方法,也需要更加具体的挖掘目标来确定;再者,算法本身角度,是否该算法能够并行化,或者是否值得并行化也是需要研究的问题。
如图4所示①,从对用户提供服务角度来说,如何在海量的数据进行抽取、转换和加载,建立相应的数据仓库或数据集市,包括数据上载、服务调用等,并进行相应的挖掘(并行或非并行),以及挖掘中的数据分布和任务调度等,最终生成分析结果的报告,这些环节都是值得思考的问题。
如何集成在一个实际应用的系统中,也将对海量数据挖掘系统的实时性提出较高的挑战性。
[2]
图4面向服务的海量数据挖掘
Hadoop是ApacheSoftwareFoundation(ASF)旗下的一个开源的分布式数据挖掘平台,包括HadoopCommon、HDFS、MapReduce、Zookeeper。
Mahout是ASF旗下的一个机器学习和数据挖掘算法的开源项目,提供了一些经典算法的实现,旨在帮助程序员更加方便快捷地创建智能应用程序。
但是,无论从平台角度,或是从算法研究角度,仍然存在许多值得改进的地方,如迭代类算法的数据重载问题、Job的各个部分计时问题、设计并行算法所带来的通信开销和并行开销的分析问题,都是值得研究和探讨的问题。
参考文献:
[1]WhiteT. Hadoop权威指南(中文版)[M].曾大聃,周傲英,译.北京:
清华大学出版社,2010.
[2]HuangJ.Speech:
massivedataminingandinformationservice[EB/OL].[2010-12-28].http:
//www.rmbi.ust.hk/docs/Speech%20by%20Dr%20Joshua%20Huang.pdf.
[3]JoyKI. Massivedatavisualization:
asurvey[C]//MoellerT,HamannB,RusseledsRD.MathematicalFoundationsofScientificVisualization,ComputerGraphics,andMassiveDataExploration. Heidelberg:
SpringerVerlag,2009:
285-302.
[4]都志辉.高性能计算之并行编程技术——MPI并行程序设计[DB/OL].(2010-08-25)[2011-01-03].
[5]刘鹏.网格概念的界定[EB/OL].(2010)[2011-01-03].
Concept.pdf.
[6]刘鹏.我国网格研究的现状[EB/OL].[2011-01-03].
pdf.
[7]陈全,邓倩妮.云计算及其关键技术[J].高性能计算发展与应用,2009,29(9):
2562-2567.
[8]TanasescuC,ReedT.Dataintensivecomputing[EB/OL].[2010-10-23].
[9]AnandR,JeffreyD.Miningofmassivedatasets[EB/OL].[2011-01-03].http:
//infolab.stanford.edu/~
ullman/mmds/book.pdf.
作者简介:
罗爱宝,南京大学计算机科学与技术系硕士研究生;主要研究方向为数据挖掘。
E-mail:
roaporl@
陈光鹏,南京大学计算机科学与技术系硕士研究生;主要研究方向为数据挖掘。
E-mail:
guangpengchen@
商琳,南京大学计算机科学与技术系,副教授;主要研究方向为人工智能、数据挖掘和粗糙集。
E-mail:
shanglin@