海量数据处理

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

海量数据处理

1 背景

我们生活在一个数据时代:

(1) 每天有10 TB的视频数据被上传到世界上最大的视频分享网站Youtube上。

(2) 美国的纽约证劵交易所每天大约产生1 TB的交易数据。

(3) 中国深圳市拥有20万个交通监控摄像头,每天产生的数据大于 1 PB。

(4) 瑞士日内瓦附近的大型强子对撞机,每年大约产生15 PB的数据。

……

已经很难衡量现今的社会中存储的电子数据总量,但是

据IDC(Internet Data Center)估计,2006年“数字全球”项目(digital universe)的数据总量为0.18 ZB,并且预测到2011年这个数字将达到1.8 ZB,为2006年的10倍。1 ZB相当于10的21次方字节,或者相当于1 000 EB、1 000 000 PB,或者大家更为熟悉的10亿TB。这相当于世界上每个人一个磁盘驱动器的数量级[1]。

如图1所示[2],股票交易、商品零售、交通、通信、生产、Web、音像业等多数据源使得数据类型复杂化,包括有结构、无结构(文本、图像、音频、视频等)数据。数据本身也越来越趋于复杂化、高维化。

图 1海量数据及其复杂类型

技术的进步已经使得数据存储变得相对便宜,带宽相对充足,导致了这一系列的海量数据被存储下来,继而在大数据集上的建模和仿真。这样的大数据存储普遍存在于一个多样化的应用领域中,包括科学研究(生物信息,气候变化)。从这样海量数据中提取珍贵知识的挑战,随着多类型数据、多数据源、多种多样的规模,越来越使人变得畏缩,更不要提最终目标是去实时处理。有句话说得好:“算法再好,通常也难敌更多的数据。”意思就是说对于某些问题(譬如基于既往偏好生成的电影和音乐推荐),不论你的算法有多厉害,它们总会在更多的数据面前变得无能为力(更不用说没有优化过的算法)。为了剖析与研究问题,科学与技术目标可归为下面主要的三种:管理数据爆炸性、从海量数据中提取知识、归纳数据使得人类易于理解和反应。如图2所示①。

图 2海量数据的处理过程

那么何为海量数据呢?目前还没有一个统一的定义。Joy[3]指出,令单个计算节点无法完成存储和处理的数据,即可称为海量数据。显

然,“海量”是一个动态的概率,它随着单机计算能力的提升和算法的改进而改变。本文认为,目前称作海量的数据应具有以下特性:

(1) 数据量大:通常达到TB级的数据。

(2) 数据类型复杂:面对的海量数据常常不是单一类型的数据——字符数据、文本数据、多媒体数据,甚至是源源不断的数据流等。

(3) 多模态数据:对于一个事物,得到的数据可能是通过不同的方式或角度收集到的,如多模态的视频数据,包括字幕、音频和图像等模态。处理这类数据时,需要将多种模态结合起来。

2 挑战与解决方法

面临如此海量的数据,首先摆在眼前的问题就是:这种数据的大小已经超出了单个机器的负载能力。利用机器集群和并行化技术,是解决问题的一个有效途径。以下几种方法是近几年比较热门的方法。

2.1高性能计算

从广义上讲,高性能计算(HPC,High Performance Computing)是将作业分配给一个机器集群,这些机器访问共享文件系统,由一个存储区网络(SAN,Storage Area Network)进行管理,非常适用于以计算密集型为主的作业。但当节点需要访问的数据流很大时(比如数百GB的数据),就会产生一个问题:因为网络带宽成为“瓶颈”,所以计算节点闲置下来。[1]

这种计算,主要是指应用于科学与工程的、以高性能计算机为平台的大规模并行计算。它已成为一项学

①/articles/t/h/e/The_Initiative_04bb.html

科——大规模科学与工程计算。而大规模并行计算也已成为研究科学与工程技术的一种新的手段和方式;采用这种手段和方式的科学研究与工程技术研究设计,称为“计算方式的科学与工程”(Computational Science and Engineering)。例如,著名的波音777飞机的设计,基本上

是依靠高性能计算机的“无纸设计”,它可以大量节省传统设计技术中的昂贵的风洞实验,设计时间也大大缩短。[3]

高性能计算为平台的大规模并行计算,在我国也取得很大的成果,并且有力地推动交叉学科的发展。在清华大学研制的THNPSC-1和THNPSC-2,以及在上海大学研制的“自强2000”等高性能计算机平台上,已有很多实际经验。如与化学专家进行的“高分子链”的研究计算,与化工专家进行的“石油化工超临界化学反应”的研究计算,与机械铸工专家进行的“模具冲模流体场”研究计算。[4]

目前,国内外在高性能计算机系统中,最广泛使用的并行编程环境是MPI(Message Passing Interface),它已成为国际上的一种并行程序的标准。MPI具有移植性好、功能强大、效率高等多种优点,而且有多重不同的免费、高效、使用的实现版本,几乎所有的并行计算机厂商都提供对它的支持,这是其他所有的并行编程环境都无法比拟的。[4]

2.2 网格计算

通过利用大量异构计算机(通常为桌面)的未用资源(CPU周期和磁盘存储),将其作为嵌入在分布式电信基础设施中的一个虚拟的计算机集群,为解决大规模的计算问题提供了一个模型。网格计算的焦点放在支持跨管理域计算的能力,使它区别于传统的计算机集群或传统的分布式计算。

Ian Foster 在《什么是网格?判断是否网格的三个标准》一文中,限定网格必须同时满足三个条件:①在非集中控制的环境中协同使用资源;②使用标准的、开放的和通用的协议和接口(Ian Foster 认为目前只有Globus 才算得上标准协议);③提供非平凡的服务。这三个条件非常严格,像P2P(Peer to Peer)、SUN Grid Engine、Condor、Entropia、MultiCluster等都被排除在网格之外。但并不是所有人都同意他的观点,例如,有许多人赞同广义的网格概念,称之为巨大全球网格(GGG,Great GlobalGrid),它不仅包括计算网格、数据网格、信息网格、知识网格、商业网格,还包括一些已有的网络计

相关文档
最新文档