专栏
60
易 珂
香港科技大学
大数据算法
关键词:大数据算法 数据移动
“大数据”(big d a t a)一词最近两年炒得火
热。但在我看来,所谓“大数据”和业已存在的
“海量数据”(massive data)或者“超大规模数
据”(very large data)从技术层面讲并无本质上的
区别,都是指大量的用传统方法无法处理的数据。
而“大数据”之所以能够改头换面再次掀起热潮,
其深层原因是如今大数据已不是科学研究的专属
品,随着互联网、物联网、云计算和社交媒体的蓬
勃发展,它已经扩散到各个行业乃至个人,以致又
重新引起学术界和工业界的广泛关注。
本刊亦在2012年第6期、第9期连续刊登了大
数据专题,对大数据环境下诸多方面的问题进行了
探讨。然而,算法作为计算机科学的基石,尚未进
行过专门的阐述。任何一个计算问题经过分析和建
模,几乎都规约为算法问题,在大数据的环境下同
样如此。本文尝试在大数据的背景下,浅析一些算
法设计所要做出的改变以及面临的挑战。
数据移动成为计算瓶颈
本文认为数据移动(即通信开销)是大数据计
算问题的主要瓶颈,从而也是算法设计中的主要优
化目标。大数据时代下,计算逐渐从CPU密集型转
化为数据密集型。CPU密集型的计算任务数据量不
大,但对CPU速度要求高,如各种组合优化问题、
线性规划、数值计算等等,对这些问题的算法复杂
度往往只要求是多项式级即可,对它们的理论研究
关注的也是多项式级和非多项式级的区分。而数据
密集型的计算任务面临超大的数据规模,算法的复
杂度要求必须为线性或近线性(near-linear),甚至
于亚线性(sub-linear)。这意味着数据集里的每一
条数据只通过CPU一次或者几次。这样,把数据从
它们的存储区域移动到CPU再移走的时间就远远超
过了它们在CPU停留的时间,使得CPU不再成为计
算的瓶颈。这种计算模式的转化对于硬件发展既是
好消息也是坏消息:好消息是我们不必再费尽心力
维持CPU速度发展的摩尔定律,坏消息是我们必须
提高存储系统、
通信系统的性能,解决新的瓶颈问
题。同时对于算法设计而言,我们也要将重心从传
统的时间复杂度移到通信复杂度上,努力降低算法
的数据移动开销。数据移动的代价可以说是根本性
的:信息存储需要空间,信息移动速度不会超过光
速,计算任务又依赖于数据间的交互,所以不管硬
件架构如何发展,数据移动的开销总是无法避免。
算法设计的发展在过去二十多年中也经历了从
CPU密集型到数据密集型的转化,诞生了很多面向
大数据的新型计算模型。这些计算模型往往都忽略
了CPU开销,用一些新瓶颈来刻画算法复杂度。本
文在余下的篇幅里将对一些主要的算法模型作简单
介绍,从中可以看出,它们用来刻画复杂度的都是
某种形式的数据移动的开销。当然,没有一个模型
是完美的,正如乔治
·
布克斯(George Box)的名
言:“所有的模型都是错的,但有些还有点儿用”
(all models are wrong, but some are useful)。在实
际中影响计算性能的因素很多,一个理论模型是否
有用取决于它是否抓住了最重要的因素而不失简