大数据管理:概念、技术与挑战
来源:华章杂志 更新时间:2013-08-14


云计算、物联网、社交网络等新兴服务促使人类社会的数据种类和规模正以前所未有的速度增长,大数据时代正式到来。数据从简单的处理对象开始转变为一种基础性资源,如何更好的管理和利用大数据已经成为普遍关注的话题。大数据的规模效应给数据存储、管理以及数据分析带来了极大的挑战,数据管理方式上的变革正在酝酿和发生。本文对大数据的基本概念进行剖析,并对大数据的主要应用做简单对比。在此基础上,阐述大数据处理的基本框架,并就云计算技术对于大数据时代数据管理所产生的作用进行分析。最后归纳总结大数据时代所面临的新挑战。
1、引言
    随着以博客、社交网络、基于位置的服务LBS 为代表的新型信息发布方式的不断涌现,以及云计算、物联网等技术的兴起,数据正以前所未有的速度在不断的增长和累积,大数据时代已经来到。学术界、工业界甚至于政府机构都已经开始密切关注大数据问题,并对其产生浓厚的兴趣。就学术界而言,Nature 早在2008 年就推出了Big Data 专刊。计算社区联盟(Computing Community Consortium)在2008 年发表了报告《Big-Data Computing: Creatingrevolutionary breakthroughs in commerce, science, and society》,阐述了在数据驱动的研究背景下,解决大数据问题所需的技术以及面临的一些挑战。Science 在2011 年2 月推出专刊《Dealing with Data》,主要围绕着科学研究中大数据的问题展开讨论,说明大数据对于科学研究的重要性。美国一些知名的数据管理领域的专家学者则从专业的研究角度出发,联合发布了一份白皮书《Challenges and Opportunities with Big Data。该白皮书从学术的角度出发,介绍了大数据的产生,分析了大数据的处理流程,并提出大数据所面临的若干挑战。
    全球知名的咨询公司麦肯锡(McKinsey)去年6 月份发布了一份关于大数据的详尽报告《Big data: The next frontier for innovation, competition, and productivity》,对大数据的影响、关键技术和应用领域等都进行了详尽的分析。进入2012 年以来,大数据的关注度与日俱增。1 月份的达沃斯世界经济论坛上,大数据是主题之一,该次会议还特别针对大数据发布了报告《Big Data, Big Impact: New Possibilities for International Development》,探讨了新的数据产生方式下,如何更好的利用数据来产生良好的社会效益。该报告重点关注了个人产生的移动数据与其他数据的融合与利用。3 月份美国奥巴马政府发布了《大数据研究和发展倡议》[7](Big Data Research and Development Initiative),投资2 亿以上美元,正式启动“大数据发展计划”。计划在科学研究、环境、生物医学等领域利用大数据技术进行突破。奥巴马政府的这一计划被视为美国政府继信息高速公路(Information Highway)计划之后在信息科学领域的又一重大举措。与此同时,联合国一个名为Global Pulse 的倡议项目在今年5 月发布报告《Big Data for Development:Challenges & Opportunities》,该报告主要阐述大数据时代各国特别是发展中国家在面临数据洪流(Data Deluge)的情况下所遇到的机遇与挑战,同时还对大数据的应用进行了初步的解读。《纽约时报》的文章《The Age of Big Data》则通过主流媒体的宣传使普通民众开始意识到大数据的存在,以及大数据对于人们日常生活的影响。
    大数据的火热并不意味着对于大数据的了解深入,反而表明大数据存在过度炒作的危险。大数据的基本概念、关键技术以及对其的利用上均存在很多的疑问和争议。本文从大数据问题背后的本质出发,对现有的大数据研究资料进行全面的归纳和总结。首先简要介绍大数据的基本概念,阐述其同传统数据库的区别。在此基础上,对大数据处理框架进行详细解析。我们认为大数据的发展离不开云计算技术,云计算支撑着大数据存储、管理以及数据分析等。因此本文展开介绍了大数据时代不可或缺的云计算技术和工具。最后全面阐述大数据时代面临的新挑战。
2、大数据的基本概念、来源与应用
    2.1 大数据的基本概念
    大数据本身是一个比较抽象的概念,单从字面来看,它表示数据规模的庞大。但是仅仅数量上的庞大显然无法看出大数据这一概念和以往的“海量数据”(Massive Data)、“超大规模数据”(Very Large Data)等概念之间有何区别。对于大数据尚未有一个公认的定义,不同的定义基本是从大数据的特征出发,通过这些特征的阐述和归纳,试图给出其定义。在这些定义中,比较有代表性的是3V 定义,即认为大数据需满足3 个特点:规模性(Volume)、多样性(Variety)和高速性(Velocity)。除此之外,还有提出4V 定义的,即尝试在3V 的基础上增加一个新的特性。关于第四个V 的说法并不统一,IDC 认为大数据还应当具有价值性(Value),大数据的价值往往呈现出稀疏性的特点。而IBM 认为大数据必然具有真实性(Veracity)。维基百科对大数据的定义则简单明了:大数据是指利用常用软件工具捕获、管理和处理数据所耗时间超过可容忍时间的数据集。
    眼下在大数据定义问题上很难达成一个完全的共识,这点和云计算的概念刚提出时的情况是相似的。在面对实际问题时,不必过度的拘泥于具体的定义之中,把握3V 定义的基础上,适当的考虑4V 特性即可。
    2.2 从数据库(Database, DB)到大数据(Big Data, BD)
    从数据库(DB)到大数据(BD),看似只是一个简单的技术演进,但细细考究不难发现两者有着本质上的差别。大数据的出现,必将颠覆传统的数据管理方式。在数据来源、数据处理方式和数据思维等方面都会对其带来革命性的变化。
    如果要用简单的方式来比较传统的数据库和大数据的区别的话,我们认为“池塘捕鱼”和“大海捕鱼”是个很好的类比。“池塘捕鱼”代表着传统数据库时代的数据管理方式,而“大海捕鱼”则对应着大数据时代的数据管理方式,“鱼”是待处理的数据。“捕鱼”环境条件的变化导致了“捕鱼”方式的根本性差异。这些差异主要体现在如下几个方面:
    1、数据规模:“池塘”和“大海”最容易发现的区别就是规模。“池塘”规模相对较小,即便是先前认为比较大的“池塘”,譬如VLDB(Very Large Database),和“大海”XLDB(Extremely Large Database)相比仍旧偏小。“池塘”的处理对象通常以MB 为基本单位,而“大海”则常常以GB,甚至是TB、PB 为基本处理单位。
    2、数据类型:过去的“池塘”中,数据的种类单一,往往仅仅有一种或少数几种,这些数据又以结构化数据为主。而在“大海”中,数据的种类繁多,数以千计,而这些数据又包含着结构化、半结构化以及非结构化的数据,并且半结构化和非结构化数据所占份额越来越大。
    3、模式(Schema)和数据的关系:传统的数据库都是先有模式,然后才会产生数据。这就好比是先选好合适的“池塘”,然后才会向其中投放适合在该“池塘”环境生长的“鱼”。而大数据时代很多情况下难以预先确定模式,模式只有在数据出现之后才能确定,且模式随着数据量的增长处于不断的演变之中。这就好比先有少量的鱼类,随着时间推移,鱼的种类和数量都在不断的增长。鱼的变化会使大海的成分和环境处于不断的变化之中。
    4、处理对象:在“池塘”中捕鱼,“鱼”仅仅是其捕捞对象。而在“大海”中,“鱼”除了是捕捞对象之外,还可以通过某些“鱼”的存在来判断其他种类的“鱼”是否存在。也就是说传统数据库中数据仅作为处理对象。而在大数据时代,要将数据作为一种资源来辅助解决其他诸多领域的问题。
    5、处理工具:捕捞“池塘”中的“鱼”,一种渔网或少数几种基本就可以应对,也就是所谓的One Size Fits All。但是在“大海”中,不可能存在一种渔网能够捕获所有的鱼类,也就是说No Size Fits All。
 从“池塘”到“大海”,不仅仅是规模的变大。传统的数据库代表着数据工程(Data Engineering)的处理方式,大数据时代的数据已不仅仅只是工程处理的对象,需要采取新的数据思维来应对。图灵奖获得者、著名数据库专家Jim Gray 博士观察并总结人类自古以来,在科学研究上,先后历经了实验、理论和计算三种范式。当数据量不断增长和累积到今天,传统的三种范式在科学研究,特别是一些新的研究领域已经无法很好的发挥作用,需要有一种全新的第四种范式来指导新形势下的科学研究。基于这种考虑,Jim Gray 提出了一种新的数据探索型研究方式,被他自己称之为科学研究的“第四种范式”(The Fourth Paradigm)。
 130172231993240001_new.jpg (666×163)
表1 科学发现的四种范式
    四种范式的比较如表1所示。第四种范式的实质就是从以计算为中心,转变到以数据处理为中心,也就是我们所说的数据思维。这种方式需要我们从根本上转变思维。正如前面提到的“捕鱼”,在大数据时代,数据不再仅仅是“捕捞”的对象,而应当转变成一种基础资源,用数据这种资源来协同解决其他诸多领域的问题。计算社会科学(Computational SocialScience)基于特定社会需求,在特定的社会理论指导下,收集、整理和分析数据足迹(dataprint),以便进行社会解释、监控、预测与规划的过程和活动。计算社会科学是一种典型的需要采用第四种范式来做指导的科学研究领域。Duncan J. Watts 在《自然》杂志上的文章《Atwenty-first century science》也指出借助于社交网络和计算机分析技术,21 世纪的社会科学有可能实现定量化的研究,从而成为一门真正的自然科学。
    2.3 大数据的产生和应用
    人类历史上从未有哪个时代和今天一样产生如此海量的数据。数据的产生已经完全不受时间、地点的限制。从开始采用数据库作为数据管理的主要方式开始,人类社会的数据产生方式大致经历了3 个阶段,而正是数据产生方式的巨大变化才最终导致大数据的产生。
    1、运营式系统阶段。数据库的出现使得数据管理的复杂度大大降低,实际中数据库大都为运营系统所采用,作为运营系统的数据管理子系统。比如超市的销售记录系统,银行的交易记录系统、医院病人的医疗记录等。人类社会数据量第一次大的飞跃正是建立在运营式系统开始广泛使用数据库开始。这个阶段最主要特点是数据往往伴随着一定的运营活动而产生并记录在数据库中的,比如超市每销售出一件产品就会在数据库中产生相应的一条销售记录。这种数据的产生方式是被动的。
    2、用户原创内容阶段。互联网的诞生促使人类社会数据量出现第二次大的飞跃。但是真正的数据爆发产生于Web 2.0 时代,而Web 2.0 的最重要标志就是用户原创内容(UGC,User Generated Content)。这类数据近几年一直呈现爆炸性的增长,主要有两个方面的原因。首先是以博客、微博为代表的新型社交网络的出现和快速发展,使得用户产生数据的意愿更加强烈。其次就是以智能手机、平板电脑为代表的新型移动设备的出现,这些易携带、全天候接入网络的移动设备使得人们在网上发表自己意见的途径更为便捷。这个阶段数据的产生方式是主动的。
    3、感知式系统阶段。人类社会数据量第三次大的飞跃最终导致了大数据的产生,今天我们正处于这个阶段。这次飞跃的根本原因在于感知式系统的广泛使用。随着技术的发展,人们已经有能力制造极其微小的带有处理功能的传感器,并开始将这些设备广泛的布置于社会的各个角落,通过这些设备来对整个社会的运转进行监控。这些设备会源源不断的产生新数据,这种数据的产生方式是自动的。
    简单来说,数据产生经历了被动、主动和自动三个阶段。这些被动、主动和自动的数据共同构成了大数据的数据来源,但其中自动式的数据才是大数据产生的最根本原因。
 130172232137298240_new.jpg (668×239)
表2 典型大数据应用的比较
    正如Google 的首席经济学家Hal Varian 所说,数据是广泛可用的,所缺乏的是从中提取出知识的能力。数据收集的根本目的是根据需求从数据中提取有用的知识,并将其应用到具体的领域之中。不同领域的大数据应用有不同的特点,表2 列举了若干具有代表性的大数据应用及其特征。
    正是由于大数据的广泛存在,才使得大数据问题的解决很具挑战性。而它的广泛应用,则促使越来越多的人开始关注和研究大数据问题。
3、大数据处理框架
    3.1 大数据处理模式
    大数据的应用类型很多,主要的处理模式可以分为流处理(Stream Processing)和批处理(Batch Processing)两种。批处理是先存储后处理(Store-then-process),而流处理则是直接处理(Straight-through processing)。
    3.1.1 流处理
    流处理的基本理念是数据的价值会随着时间的流逝而不断减少。因此尽可能快的对最新的数据做出分析并给出结果是所有流数据处理模式的共同目标。需要采用流数据处理的大数据应用场景主要有网页点击数的实时统计、传感器网络、金融中的高频交易等。
    流处理的处理模式将数据视为流,源源不断的数据组成了数据流。当新的数据到来时就立刻处理并返回所需的结果。图1是流处理中基本的数据流模型:
 130172232293227159_new.jpg (331×130)
图1 基本的数据流模型
    数据的实时处理是一个很有挑战性的工作,数据流本身具有持续达到、速度快且规模巨大等特点,因此通常不会对所有的数据进行永久化存储,而且数据环境处在不断的变化之中,系统很难准确掌握整个数据的全貌。由于响应时间的要求,流处理的过程基本在内存中完成,其处理方式更多的依赖于在内存中设计巧妙的概要数据结构(Synopsis data structure),内存容量是限制流处理模型的一个主要瓶颈。以PCM(相变存储器)为代表的SCM(Storage ClassMemory,储存级内存)设备的出现或许可以使内存未来不再成为流处理模型的制约。
    数据流的理论及技术研究已经有十几年的历史,目前仍旧是研究热点。于此同时很多实际系统也已开发和得到广泛的应用,比较代表性的开源系统如Twitter 的Storm、Yahoo的S4以及Linkedin 的Kafka等。
    3.1.2 批处理
    Google 公司在2004 年提出的MapReduce编程模型是最具代表性的批处理模式。一个完整的MapReduce 过程如图2所示:
 130172232489408380_new.jpg (614×429)
图2 MapReduce执行流程图
    MapReduce模型首先将用户的原始数据源进行分块,然后分别交给不同的Map任务区处理。Map任务从输入中解析出Key/Value对集合,然后对这些集合执行用户自行定义的Map函数得到中间结果,并将该结果写入本地硬盘。Reduce任务从硬盘上读取数据之后,会根据key 值进行排序,将具有相同key 值的组织在一起。最后用户自定义的Reduce函数会作用于这些排好序的结果并输出最终结果。
    从MapReduce的处理过程我们可以看出,MapReduce的核心设计思想在于:
    1)将问题分而治之;
    2)把计算推到数据而不是把数据推到计算,有效的避免数据传输过程中产生的大量通讯开销。
    MapReduce模型简单,且现实中很多问题都可用MapReduce模型来表示。因此该模型公开后,立刻受到极大的关注,并在生物信息学、文本挖掘等领域得到广泛的应用。
    无论是流处理还是批处理,都是大数据处理的可行思路。大数据的应用类型很多,在实际的大数据处理中,常常并不是简单的只使用其中的某一种,而是将二者结合起来。互联网是大数据最重要的来源之一,很多互联网公司根据处理时间的要求将自己的业务划分为在线(Online)、近线(Nearline)和离线(Offline),比如著名的职业社交网站Linkedin。这种划分方式是按处理所耗时间来划分的。其中在线的处理时间一般在秒级,甚至是毫秒级,因此通常采用上面所说的流处理。离线的处理时间可以以天为基本单位,基本采用批处理方式,这种方式可以最大限度的利用系统I/O。近线的处理时间一般在分钟级或者是小时级,对其处理模型并没有特别的要求,可以根据需求灵活选择。但在实际中多采用批处理模式。
 3.2 大数据处理的基本流程
    大数据的数据来源广泛,应用需求和数据类型都不尽相同,但是最基本的处理流程一致。海量Web 数据的处理是一类非常典型的大数据应用,从中可以归纳出大数据处理的最基本流程。ScholarSpace由中国人民大学网络与移动数据管理实验室(WAMDM)开发,目标是建立一个“以人为本”,即以作者为中心来展示多学科中文文献的集成数据库系统。 该系统已经从最初的计算机领域扩展到包括经济、法律等人文社会科学在内的多领域。从数据抽取和集成,一直到最终的结果展示,ScholarSpace 完整的体现出大数据处理的一般流程。在其基础上我们归纳出大数据的基本流程,如图3 所示:
 130172232631616514_new.jpg (780×733)
图3 大数据处理基本流程
    整个大数据的处理流程可以定义为在合适工具的辅助下,对广泛异构的数据源进行抽取和集成,结果按照一定的标准统一存储。利用合适的数据分析技术对存储的数据进行分析,从中提取有益的知识并利用恰当的方式将结果展现给终端用户。具体来说可以分为数据抽取与集成、数据分析以及数据解释。

 3.2.1 数据抽取与集成
    大数据的一个重要特点就是多样性,这就意味着数据来源极其广泛,数据类型极为繁杂。这种复杂的数据环境给大数据的处理带来极大的挑战。要想处理大数据,首先必须对所需数据源的数据进行抽取和集成,从中提取出关系和实体,经过关联和聚合之后采用统一定义的结构来存储这些数据。在数据集成和提取时需要对数据进行清洗,保证数据质量及可信性。同时还要特别注意前面提及的大数据时代模式和数据的关系,大数据时代的数据往往是先有数据再有模式,且模式是在不断的动态演化之中的。
    数据抽取和集成技术不是一项全新的技术,传统数据库领域已对此问题有了比较成熟的研究。随着新的数据源的涌现,数据集成方法也在不断的发展之中。从数据集成模型来看,现有的数据抽取与集成方式可以大致分为以下四种类型:基于物化或是ETL 方法的引擎(Materialization or ETL engine)、基于联邦数据库或中间件方法的引擎(Federation engine orMediator)、基于数据流方法的引擎(Stream engine)及 基于搜索引擎的方法(Search engine)。
    3.2.2 数据分析
    数据分析是整个大数据处理流程的核心,因为大数据的价值产生于分析过程。从异构数据源抽取和集成的数据构成了数据分析的原始数据。根据不同应用的需求可以从这些数据中选择全部或部分进行分析。传统的分析技术如数据挖掘、机器学习、统计分析等在大数据时代需要做出调整,因为这些技术在大数据时代面临着一些新的挑战,主要有:
    1、数据量大并不一定意味着数据价值的增加,相反这往往意味着数据噪音的增多。因此在数据分析之前必须进行数据清洗等预处理工作,但是预处理如此大量的数据对于机器硬件以及算法都是严峻的考验。
    2、大数据时代的算法需要进行调整。首先大数据的应用常常具有实时性的特点,算法的准确率不再是大数据应用的最主要指标。很多场景中算法需要在处理的实时性和准确率之间取得一个平衡,比如在线的机器学习算法(online machine learning)。其次云计算是进行大数据处理的有力工具,这就要求很多算法必须做出调整以适应云计算的框架,算法需要变得具有可扩展性。最后在选择算法处理大数据时必须谨慎,当数据量增长到一定规模以后,可以从小量数据中挖掘出有效信息的算法并一定适用于大数据。统计学中的邦弗朗尼原理(Bonferroni’s Principle)就是一个典型的例子。
    3、数据结果好坏的衡量。得到分析结果并不难,但是结果好坏的衡量却是大数据时代数据分析的新挑战。大数据时代的数据量大、类型庞杂,进行分析的时候往往对整个数据的分布特点掌握的不太清楚,这会导致最后在设计衡量的方法以及指标的时候遇到诸多困难。大数据分析已被广泛应用于诸多领域,典型的有推荐系统、商业智能、决策支持等。
    3.2.3 数据解释
    数据分析是大数据处理的核心,但是用户往往更关心结果的展示。如果分析的结果正确但是没有采用适当的解释方法,则所得到的结果很可能让用户难以理解,极端情况下甚至会误导用户。数据解释的方法很多,比较传统的就是以文本形式输出结果或者直接在电脑终端上显示结果。这种方法在面对小数据量时是一种很好的选择。但是大数据时代的数据分析结果往往也是海量的,同时结果之间的关联关系极其复杂,采用传统的解释方法基本不可行。
    可以考虑从下面两个方面提升数据解释能力。
    1、引入可视化技术。可视化作为解释大量数据最有效的手段之一率先被科学与工程计算领域采用。通过对分析结果的可视化用形象的方式向用户展示结果,而且图形化的方式比文字更易理解和接受。常见的可视化技术有标签云(Tag Cloud)、历史流(history flow)、空间信息流(Spatial information flow)等。可以根据具体的应用需要选择合适的可视化技术。
    2、让用户能够在一定程度上了解和参与具体的分析过程。这个既可以采用人机交互技术,利用交互式的数据分析过程来引导用户逐步的进行分析,使得用户在得到结果的同时更好的理解分析结果的由来。也可以采用数据起源技术,通过该技术可以帮助追溯整个数据分析的过程,有助于用户理解结果。
4、关键技术分析
    大数据价值的完整体现需要多种技术的协同。文件系统提供最底层存储能力的支持。为了便于数据管理,需要在文件系统之上建立数据库系统。通过索引等的构建,对外提供高效的数据查询等常用功能。最终通过数据分析技术从数据库中的大数据提取出有益的知识。
    4.1 云计算:大数据的基础平台与支撑技术
    如果将各种大数据的应用比作一辆辆“汽车”的话,支撑起这些“汽车”运行的“高速公路”就是云计算。正是云计算技术在数据存储、管理与分析等方面的支撑,才使得大数据有用武之地。
    在所有的“高速公路”中,Google 无疑是技术最为先进的一个。需求推动创新,面对海量的Web 数据, Google 于2006 年首先提出了云计算的概念。支撑Google 内部各种大数据应用的正是其自行研发的一系列云计算技术和工具。难能可贵的是Google 并未将这些技术完全封闭,而是以论文的形式逐步公开其实现。正是这些公开的论文,使得以GFS、MapReduce、Bigtable 为代表的一系列大数据处理技术被广泛了解并得到应用,同时还催生出以Hadoop为代表的一系列云计算开源工具。云计算技术很多,但是通过Google 云计算技术的介绍能够快速、完整的把握云计算技术的核心和精髓。本节以Google 的相关技术介绍为主线,详细介绍Google 以及其他众多学者和研究机构在大数据技术方面已有的一些工作。根据Google 已公开的论文及相关资料,结合大数据处理的需求,我们对Google 的技术演化进行了整理,如图4所示:
 130172232892991464_new.jpg (536×331)
图 4 Google 技术演化图
4.1.1 文件系统
    文件系统是支撑上层应用的基础。在Google 之前,尚未有哪个公司面对过如此多的海量数据。因此对于Google 而言并没有完全成熟的存储方案可以直接使用。Google 认为系统组件失败是一种常态而不是异常,基于此思想Google 自行设计开发了Google 文件系统GFS(Google File System)。GFS 是构建在大量廉价服务器之上的一个可扩展的分布式文件系统,GFS 主要针对文件较大,且读远大于写的应用场景,采用主从(Master-Slave)结构。通过数据分块、追加更新(Append-Only)等方式实现了海量数据的高效存储。随着时间推移,GFS 的架构逐渐开始无法适应需求。Google 对GFS 进行了重新的设计,该系统正式的名称为Colosuss,具体实现尚未公开,但是从ACM 对GFS 团队核心工程师的访谈可以了解其一些新的特性。其中GFS 的单点故障(指仅有一个主节点容易成为系统的瓶颈)、海量小文件的存储等问题在Colosuss 中均得到了解决。
    除了Google,众多企业和学者也从不同方面对满足大数据存储需求的文件系统进行了详尽的研究。微软自行开发的Cosmos支撑着其搜索、广告等业务。HDFS和CloudStore都是模仿GFS 的开源实现。GFS 类的文件系统主要是针对较大文件设计的,而在图片存储等应用场景,文件系统主要存储海量小文件,此时GFS 等文件系统因为频繁读取元数据等原因,效率很低。针对这种情况,Facebook 推出了专门针对海量小文件的文件系统Haystack,通过多个逻辑文件共享同一个物理文件、增加缓存层、部分元数据加载到内存等方式有效的解决了Facebook 海量图片存储问题。淘宝推出了类似的文件系统TFS(Tao File System),通过将小文件合并成大文件、文件名隐含部分元数据等方式实现了海量小文件的高效存储。FastDFS针对小文件的优化类似于TFS。
    4.1.2 数据库系统
    原始的数据存储在文件系统之中,但是用户习惯通过数据库系统来存取文件。因为这样会屏蔽掉底层的细节,且方便数据管理。直接采用关系模型的分布式数据库并不能适应大数据时代的数据存储,主要因为:
    1)规模效应所带来的压力。大数据时代的数据量远远超过单机所能容纳的数据量,因此必须采用分布式存储的方式。这就需要系统具有很好的扩展性,但这恰恰是传统数据库的弱势之一。因为传统的数据库产品对于性能的扩展更倾向于Scale-Up(纵向扩展)的方式,而这种方式对于性能的增加速度远低于需要处理数据的增长速度,且性能提升存在上限。适应大数据的数据库系统应当具有良好的Scale-Out(横向扩展)能力,而这种性能扩展方式恰恰是传统数据库所不具备的。即便是性能最好的并行数据库产品其Scale-Out 能力也相对有限。
    2)数据类型的多样化。传统的数据库比较适合结构化数据的存储,但是数据的多样性是大数据时代的显著特征之一。这也就是意味着除了结构化数据,半结构化和非结构化数据也将是大数据时代的重要数据类型组成部分。如何高效的处理多种数据类型是大数据时代数据库技术面临的重要挑战之一。
    3)设计理念的冲突。关系数据库追求的是“One size fits all”的目标,希望将用户从繁杂的数据管理中解脱出来,在面对不同的问题时不需要重新考虑数据管理问题,从而可以将重心转向其他的部分。但在大数据时代不同的应用领域在数据类型、数据处理方式以及数据处理时间的要求上有极大的差异。在实际的处理中几乎不可能有一种统一的数据存储方式能够应对所有场景。比如对于海量Web 数据的处理就不可能和天文图像数据采取同样的处理方式。在这种情况下,很多公司开始尝试从“One size fits one”和“One size fits domain”的设计理念出发来研究新的数据管理方式,并产生了一系列非常有代表性的工作。
    4)数据库事务特性。众所周知关系数据库中事务的正确执行必须满足ACID 特性,即原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)和持久性(Durability)。对于数据强一致性的严格要求使其在很多大数据场景中无法应用。这种情况下出现了新的BASE 特性,即只要求满足Basically Available(基本可用), Soft state(柔性状态)和 Eventually consistent(最终一致)。从分布式领域著名的CAP 理论的角度来看,ACID 追求一致性C,而BASE更加关注可用性A。正是在事务处理过程中对于ACID 特性的严格要求,使得关系型数据库的可扩展性极其有限。
    面对这些挑战,以Google 为代表的一批技术公司纷纷推出了自己的解决方案。Bigtable是Google 早期开发的数据库系统,它是一个多维稀疏排序表,由行和列组成,每个存储单元都有一个时间戳,形成三维结构。不同的时间对同一个数据单元的多个操作形成的数据的多个版本之间由时间戳来区分。除了Bigtable,Amazon 的Dynamo和Yahoo 的PNUTS也都是非常具有代表性的系统。Dynamo 综合使用了键/值存储、改进的分布式哈希表(DHT)、向量时钟(Vector Clock)等技术实现了一个完全的分布式、去中心化的高可用系统。PNUTS是一个分布式的数据库,在设计上使用弱一致性来达到高可用性的目标,主要的服务对象是相对较小的记录,比如在线的大量单个记录或者小范围记录集合的读和写访问。不适合存储大文件、流媒体等。Bigtable、Dynamo、PNUTS 等的成功促使人们开始对关系数据库进行反思,由此产生了一批未采用关系模型的数据库,这些方案现在被统一的称为NoSQL(NotOnly SQL)。NoSQL 并没有一个准确的定义,但一般认为NoSQL 数据库应当具有以下的特征:模式自由(schema-free)、支持简易备份(easy replication support)、简单的应用程序接口(simple API)、最终一致性(或者说支持BASE 特性,不支持ACID)、支持海量数据(Huge amountof data)。NoSQL 和关系型数据库的简单比较如表3 所示:
 130172233066281375_new.jpg (674×534)
表3 NoSQL 数据库和关系数据库的对比
 典型的NoSQL 数据库分类如表4所示:
 130172233242361446_new.jpg (675×266)
表4 典型NoSQL 数据库
    Bigtable 的模型简单,但是相较传统的关系数据库其支持的功能非常有限,不支持ACID特性。因此Google 开发了Megastore]系统,虽然其底层数据存储依赖Bigtable,但是它实现了类似RDBMS 的数据模型,同时提供数据的强一致性解决方案。Megastore 将数据进行细粒度的分区,数据更新会在机房间进行同步复制。Spanner是已知的Google 的最新的数据库系统,Google 在OSDI2012 上公开了Spanner 的实现。Spanner 是第一个可以实现全球规模扩展(Global Scale)并且支持外部一致的事务(support externally-consistent distributedtransactions)的数据库。通过GPS 和原子时钟(atomic clocks)技术,Spanner 实现了一个时间API。借助该API,数据中心之间的时间同步能够精确到10ms 以内。Spanner 类似于Bigtable,但是它具有层次性的目录结构以及细粒度的数据复制。对于数据中心之间不同操作会分别支持强一致性或弱一致性,且支持更多的自动操作。Spanner 的目标是控制一百万到一千万台服务器,最多包含大约10万亿目录和一千万亿字节的存储空间。另外在SIGMOD2012上,Google 公开了用于其广告系统的新数据库产品F1,作为一种混合型数据库F1 融合兼有Bigtable的高扩展性以及SQL数据库的可用性和功能性。该产品的底层存储正是采用Spanner,具有很多新的特性,包括全局分布式、同步跨数据中心复制、可视分片和数据移动、常规事务等。
    有些比较激进的观点认为“关系数据库已死”,我们认为关系数据库和NoSQL 并不是矛盾的对立体,而是可以相互补充的、适用于不同应用场景的技术。例如实际的互联网系统往往都是ACID 和BASE 两种系统的结合。近些年来,以Spanner 为代表的若干新型数据库的出现,给数据存储带来了SQL、NoSQL 之外的新思路。这种融合了一致性和可用性的NewSQL 或许会是未来大数据存储新的发展方向。
    4.1.3 索引与查询技术
    数据查询是数据库最重要的应用之一。而索引则是解决数据查询问题的有效方案。就Google 自身而言,索引的构建是提供搜索服务的关键部分。Google 最早的索引系统是利用MapReduce 来更新的。根据更新频率进行层次划分,不同的层次对应不同的更新频率。每次需要批量更新索引,即使有些数据并未改变也需要处理掉。这种索引更新方式效率较低。随后Google 提出了Percolator,这是一种增量式的索引更新器,每次更新不需要替换所有的索引数据,效率大大提高。虽然不是所有的大数据应用都需要索引,但是这种增量计算的思想非常值得我们借鉴。Google 当前正在使用的索引系统为Caffeine,其具体实现尚未公布。但是可以确定Caffeine 是构建在Spanner 之上,采用Percolator 更新索引。效率相较上一代索引系统而言有大幅度提高。
    关系数据库也是利用对数据构建索引的方式较好的解决了数据查询的问题。不同的索引方案使得关系数据库可以满足不同场景的要求。索引的建立以及更新都会耗费较多的时间,在面对传统数据库的小数据量时这些时间和其所带来的查询便利性相比是可以接受的,但是这些复杂的索引方案基本无法直接应用到大数据之上。表5是对一些索引方案直接应用在Facebook 上的性能估计:
 130172233495965952_new.jpg (658×314)
表5 查询索引的案例
    从上表可以看出不太可能将已有的成熟索引方案直接应用于大数据。NoSQL 数据库针对主键的查询效率一般较高,因此有关的研究集中在NoSQL 数据库的多值查询优化上。针对NoSQL 数据库上的查询优化研究主要有两种思路:
    1、采用MapReduce 并行技术优化多值查询:当利用MapReduce 并行查询NoSQL 数据库时,每个MapTask 处理一部分的查询操作,通过实现多个部分之间的并行查询来提高多值查询的效率。此时每个部分的内部仍旧需要进行数据的全扫描。
    2、采用索引技术优化多值查询:很多的研究工作尝试从添加多维索引的角度来加速NoSQL 数据库的查询速度。表6 列举了已有的一些解决方案的对比。
 130172233714278439_new.jpg (661×279)
表6 采用索引加速多值查询的方案对比
    ITHbase、IHbase、CCIndex和Asynchronous views是典型的采用多个一维二级索引来加速多值查询优化的实现方案。其中ITHbase 和IHbase 是两个开源的实现方案,ITHbase 主要关注于数据一致性,事务性是其重要特性。IHbase与ITHbase类似,从HBase 源码级别进行了扩展,重新定义和实现了Server、Client 端处理逻辑。CCIndex (ComplementalClustering Index)是中科院提出的另外一种索引结构,它在索引中既存储索引项,也存储记录的其他列的数据,以便在查询的时候直接在索引表中通过顺序扫描找到相应的数据,大幅度减少查询时间。该方法本质是以空间代价来换取查询效率。CCIndex 的索引更新代价比较高,会影响系统的吞吐量。索引创建以后,不能够动态增加或修改。Asynchronous views 以异步视图的方式来实现非主键的查询,提出了两种视图方案:远端视图表(Remote ViewTables: RVTs)和局部视图表(Local View Tables: LVTs)。
    RT-CAN采用多维索引加速多值查询。其局部索引采用R-tree,全局索引中采用了能够支持多维查询的CAN覆盖网络。QT-Chord是另一种双层索引结构,它的局部索引采用的是改进的四叉树IMX-CIF quad-tree,全局索引采用的Chord 覆盖网络。EMINC[56]针对每个局部节点建立一个KD-tree,然后选择KD-tree 的部分节点作为全局索引。每一个局部索引节点被看成是一个多个维度组成的立方体,然后在全局索引中用R-tree 对这些立方体进行索引。A-Tree提出了另外一种方案。基本思路是:针对每一个存储节点构建R-tree,同时创建一个Bloom filter(布隆过滤器)。这样在进行点查询的时候,首先通过Bloom filter进行验证,如果查询点不在其中,则不再进行R-tree 查询,否则继续进行R-tree查询。
    MD-HBase提出一种基于空间目标排序的索引方案。基于空间目标排序的索引方法的基本思想是:按照一定规则将覆盖整个研究区的范围划分为大小相等的格子,并给每一格网分配一个编号,用这些编号为空间目标生成一组具有代表意义的数字。其实质是将k 维空间的实体映射到一维空间,因此可以利用现有数据库管理系统中比较成熟的一维索引技术。UQE-Index主要针对海量物联网应用场景的时空特性,在时间维度上把数据分成当前数据和历史数据,对当前数据和历史数据进行不同粒度的索引,对当前数据,在时间段和子空间上进行索引,从而减少索引更新的次数,降低索引维护的代价,提高系统的吞吐量;对历史数据,批量地建立记录级别的索引;在建立子空间索引时,为了确保数据分布均匀,采用KD Tree进行动态划分。但是如果所有的数据都需要经过KD Tree来索引的话,也会带来较高的代价,会影响数据的插入速度,因此,可以对数据进行采样,对采样得到的数据利用KD Tree进行索引,从而得到空间上的划分方案。
    就已有方案来看,针对NoSQL 数据库上的查询优化技术都并不成熟,仍有很多关键性问题亟待解决。本文对大数据的基本概念进行剖析,并对大数据的主要应用做简单对比。在此基础上,阐述大数据处理的基本框架,并就云计算技术对于大数据时代数据管理所产生的作用进行分析。最后归纳总结大数据时代所面临的新挑战。
    4.1.4 数据分析技术
    数据分析是Google 最核心业务,每一次简单的网络点击背后都需要进行复杂的分析过程,因此Google对其分析系统进行不断的升级改造之中。MapReduce是Google最早采用的计算模型,适用于批处理,其具体内容已在上一节介绍。图是真实社会中广泛存在的事物之间联系的一种有效表示手段,因此对图的计算是一种常见的计算模式,而图计算会涉及到在相同数据上的不断更新以及大量的消息传递,如果采用MapReduce去实现,会产生大量不必要的序列化和反序列化开销。现有的图计算系统并不适用于Google的应用场景,因此Google 设计并实现了Pregel 图计算模型。Pregel是Google 继MapReduce 之后提出的又一个计算模型,与MapReduce 的离线批处理模式不同,它主要用于图的计算。该模型的核心思想源于著名的BSP计算模型。Dremel是Google 提出的一个适用于Web 数据级别的交互式数据分析系统,通过结合列存储和多层次的查询树,Dremel 能够实现极短时间内的海量数据分析。Dremel 支持着Google 内部的一些重要服务,比如Google 的云端大数据分析平台Big Query。Google 在VLDB 2012 发表的文章中介绍了一个内部名称为PowerDrill的分析工具,PowerDrill 同样采用了列存储,且使用了压缩技术将尽可能多的数据装载进内存。PowerDrill 与Dremel 均是Google 的大数据分析工具,但是其关注的应用场景不同,实现技术也有很大差异。Dremel 主要用于多数据集的分析,而PowerDrill 则主要应用于大数据量的核心数据集分析,数据集的种类相较于Dremel 的应用场景会少很多。由于PowerDrill 是设计用来处理少量的核心数据集,因此对数据处理速度要求极高,所以其数据应当尽可能的驻留在内存,而Dremel 的数据则存储在磁盘中。除此之外,PowerDrill 与Dremel 在数据模型、数据分区等方面都有明显的差别。从实际的执行效率来看, Dremel可以在几秒内处理PB 级的数据查询,而PowerDrill 则可以在30 至40 秒里处理7820 亿个单元格的数据,处理速度快于Dremel。二者的应用场景不同,可以相互补充。
    微软提出了一个类似MapReduce 的数据处理模型,称之为Dryad,Dryad 模型主要用来构建支持有向无环图(Directed Acycline Graph,DAG)类型数据流的并行程序。Cascading通过对Hadoop MapReduce API 的封装,支持有向无环图类型的应用。Sector/sphere可以视为一种流式的MapReduce,它由分布式文件系统Sector 和并行计算框架sphere 组成。Nephele/PACTs [68]则包括PACTs(Parallelization Contracts)编程模型和并行计算引擎Nephele。MapReduce 模型基本成为了批处理类应用的标准处理模型,很多应用开始尝试利用MapReduce 加速其数据处理。
    实时数据处理是大数据分析的一个核心需求。很多研究工作正是围绕这一需求展开的。前面介绍了大数据处理的两种基本模式,而在实时处理的模式选择中,主要有三种思路:
    1) 采用流处理模式。虽然流处理模式天然适合实时处理系统,但其适用领域相对有限。流处理模型的应用主要集中在实时统计系统、在线状态监控等。
    2) 采用批处理模式。近几年来,利用批处理模型开发实时系统已经成为研究热点并取得了很多成果。从增量计算的角度出发,Google 提出了增量处理系统Percolator,微软则提出了Nectar和DryadInc。三者均实现了大规模数据的增量计算,但是这些系统和MapReduce 并不兼容,因此Incoop和IncMR实现了MapReduce 框架下的增量计算。Yahoo 的Nova则支持有状态的增量数据计算模式。HOP在MapReduce 处理的过程中引入管道(pipeline)的概念。在保证Hadoop 容错性的前提下,使数据在各个任务间以管道的方式交互,增加了任务的并发性,提高了数据处理的实时性。中国人民大学WAMDM 实验室在HOP 基础上开发的COLA 系统在HOP 系统的基础上增加了数据采样、结果估计、置信区间计算等功能模块,一定程度上提高了HOP 的实时性。原位分析可以避免将文件集中传输到分析服务器上的通讯开销,大大提高了实时性。和从原位分析的角度出发,分别实现了针对大规模日志分析的原位MapReduce(In-situ MapReduce)和ContinuousMapReduce。原始的MapReduce 模型并不能很好的支持迭代计算,计算代价很大。而迭代计算是图计算、数据挖掘、机器学习等领域常见的运算模式,不少研究工作通过改进MapReduce 模型迭代计算的效率来提高其实时性。HaLoop通过在各个task tracker 对数据进行缓存(cache)和创建索引(index)的方式来减少磁盘IO,并提供了一套新的编程接口。但是HaLoop的动静态数据无法分离,且没有一个客观的停止迭代的标准。Twister系统将Hadoop 的全部数据存放在内存中,采用独立模块传递所有的消息和数据。但是数据驻留内存的限制使其难以实用,且其计算模型的抽象度不高,支持的应用也很有限。Twister 仍处于初步的研究阶段。
    iMapReduce介绍了一种基于MapReduce 的迭代模型,但是它的静态调度策略和粗粒度的task 可能会导致资源利用不佳和负载不均。iHadoop实现了MapReduce 的异步迭代,但是在task 之间的复用上并无太大改进。PrIter是在Hadoop 的基础上开发的,支持带优先级的迭代计算,能够保证迭代过程的快速收敛,适合top-k 之类的在线查询。最新版本的PrIter 已经支持基于内存和基于文件的数据存储方式。Spark将中间结果存放在内存中,支持除Map 和Reduce 之外的多种操作类型。但是Spark 不适用异步细粒度更新状态的应用,同时在容错性方面有待提升。Facebook 结合自己的应用场景构建了实时的Hadoop 系统,主要是实现了高可用的NameNode,对并发读和实时负载性能进行了优化,改造HBase 使其适合真实的实时生产环境。
    3) 二者的融合。有不少研究人员尝试将流处理和批处理模式进行融合,主要思路是利用MapReduce 模型实现流处理。DEDUCE 系统扩展了IBM 的流处理软件System S,使其支持MapReduce。C-MR 系统 通过3 个方面的工作实现了支持流处理的持续型MapReduce( Continuous-MapReduce):
    a)将并行流处理中的窗口概念透明的扩展到MapReduce 模型中;
    b) 有效结合了包括CPU、GPU 在内的多种异构计算能力;
    在Hadoop 系统基础上进行扩展,绕开HDFS 的限制,实现了一个全内存处理的高效流处理系统。StreamMapReduce结合事件流处理(Event Stream Processing)的特点,对MapReduce 中的Mapper 和Reducer 进行重新定义,增加了持续的、低延迟的数据处理能力。
    在充分调研基础上,作者认为原始的MapReduce 框架不适合处理快速数据。结合快速数据的特点,文中设计了一个类似MapReduce 的框架——MapUpdate,并在该框架基础上实现了一个原型系统Muppet。和上述这些系统相比,SSS最大的特点就是在支持快速流处理的同时也能够支持大规模静态数据的处理,也就是说兼具流处理和批处理。中提出名为离散流(Discretized Streams)的编程模型,并在Spark基础上实现了一个原型系统Spark Streaming。
 4.2 大数据处理工具
    关系数据库在很长的时间里成为数据管理的最佳选择,但是在大数据时代,数据管理、分析等的需求多样化使得关系数据库在很多场景不再适用。本节将对现今主流的大数据处理工具进行一个简单的归纳和总结。
    Hadoop 是目前最为流行的大数据处理平台。Hadoop 最先是Doug Cutting 模仿GFS、MapReduce 实现的一个云计算开源平台,后贡献给Apache。Hadoop 已经发展成为包括文件系统(HDFS)、数据库(HBase、Cassandra)、数据处理(MapReduce)等功能模块在内的完整生态系统(Ecosystem)。某种程度上可以说Hadoop 已经成为了大数据处理工具事实上的标准。对Hadoop 改进并将其应用于各种场景的大数据处理已经成为新的研究热点。主要的研究成果集中在对Hadoop 平台性能的改进、高效的查询处理、索引构建和使用、在Hadoop 之上构建数据仓库、Hadoop 和数据库系统的连接、数据挖掘、推荐系统等。
    除了Hadoop,还有很多针对大数据的处理工具。这些工具有些是完整的处理平台,有些则是专门针对特定的大数据处理应用。表7 归纳总结了现今一些主流的处理平台和工具,这些平台和工具或是已经投入商业使用,或是开源软件。在已经投入商业使用的产品中,绝大部分也是在Hadoop 基础上进行功能扩展,或者提供与Hadoop 的数据接口。
 130172233885288220_new.jpg (603×324)
表7 大数据工具列表
5、大数据时代面临的新挑战
    综上所述,大数据时代的数据存在着如下几个特点:多源异构;分布广泛;动态增长;先有数据后有模式。
    正是这些与传统数据管理迥然不同的特点,使得大数据时代的数据管理面临着新的挑战,下面会对其中的主要挑战进行详细分析。
    5.1 大数据集成
    数据的广泛存在性使得数据越来越多的散布于不同的数据管理系统中,为了便于进行数据分析需要进行数据的集成。数据集成看起来并不是一个新的问题,但是大数据时代的数据集成却有了新的需求,因此也面临着新的挑战。
    1、广泛的异构性。传统的数据集成中也会面对数据异构的问题,但是在大数据时代这种异构性出现了新的变化。主要体现在:
    1)数据类型从以结构化数据为主转向结构化、半结构化、非结构化三者的融合。
    2)数据产生方式的多样性带来的数据源变化。传统的电子数据主要产生于服务器或者是个人电脑,这些设备位置相对固定。随着移动终端的快速发展,手机、平板电脑、GPS 等产生的数据量呈现爆炸式增长,且产生的数据带有很明显的时空特性。
    3)数据存储方式的变化。传统数据主要存储在关系数据库中,但越来越多的数据开始采用新的数据存储方式来应对数据爆炸,比如存储在Hadoop 的HDFS 中。这就必然要求在集成的过程中进行数据转换,而这种转换的过程是非常复杂和难以管理的。
    2、数据质量。数据量大不一定就代表信息量或者数据价值的增大,相反很多时候意味着信息垃圾的泛滥。一方面很难有单个系统能够容纳下从不同数据源集成的海量数据;另一方面如果在集成的过程中仅仅简单的将所有数据聚集在一起而不做任何数据清洗,会使得过多的无用数据干扰后续的数据分析过程。大数据时代的数据清洗过程必须更加谨慎,因为相对细微的有用信息混杂在庞大的数据量中。如果信息清洗的粒度过细,很容易将有用的信息过滤掉。清洗粒度过粗,又无法达到真正的清洗效果,因此在质与量之间需要进行仔细的考量和权衡。
    5.2 大数据分析(Analytics)
    传统意义上的数据分析(analysis)主要针对结构化数据展开,且已经形成了一整套行之有效的分析体系。首先利用数据库来存储结构化数据,在此基础上构建数据仓库,根据需要构建数据立方体进行联机分析处理 (OLAP, Online Analytical Processing),可以进行多个维度的下钻(Drill-down)或上卷(Roll-up)操作。对于从数据中提炼更深层次的知识的需求促使数据挖掘技术的产生,并发明了聚类、关联分析等一系列在实践中行之有效的方法。这一整套处理流程在处理相对较少的结构化数据时极为高效。但是随着大数据时代的到来,半结构化和非结构化数据量的迅猛增长,给传统的分析技术带来了巨大的冲击和挑战,主要体现在:
    1、数据处理的实时性(Timeliness)。随着时间的流逝数据中所蕴含的知识价值往往也在衰减,因此很多领域对于数据的实时处理有需求。随着大数据时代的到来,更多应用场景的数据分析从离线(offline)转向了在线(online),开始出现实时处理的需求,比如KDD 2012最佳论文所探讨的实时广告竞价问题。大数据时代的数据实时处理面临着一些新的挑战,主要体现在数据处理模式的选择及改进。在实时处理的模式选择中,主要有三种思路:即流处理模式、批处理模式以及二者的融合。相关研究成果在上一节已经有详细介绍。虽然已有的研究成果很多,但是仍未有一个通用的大数据实时处理框架。各种工具实现实时处理的方法不一,支持的应用类型都相对有限,这导致实际应用中往往需要根据自己的业务需求和应用场景对现有的这些技术和工具进行改造才能满足要求。
    2、动态变化环境中索引的设计。关系数据库中的索引能够加速查询速率,但是传统的数据管理中模式基本不会发生变化,因此在其上构建索引主要考虑的是索引创建、更新等的效率。大数据时代的数据模式随着数据量的不断变化可能会处于不断的变化之中,这就要求索引结构的设计简单、高效,能够在数据模式发生变化时很快的进行调整来适应。前面也介绍了通过在NoSQL 数据库上构建索引来应对大数据挑战的一些方案,但总的来说,这些方案基本都有特定的应用场景,且这些场景的数据模式不太会发生变化。在数据模式变更的假设前提下设计新的索引方案将是大数据时代的主要挑战之一。
    3、先验知识的缺乏。传统分析主要针对结构化数据展开,这些数据在以关系模型进行存储的同时就隐含了这些数据内部关系等先验知识。比如我们知道所要分析的对象会有哪些属性,通过属性我们又能大致了解其可能的取值范围等。这些知识使得我们在数据分析之前就已经对数据有了一定的理解。而在面对大数据分析时,一方面是半结构化和非结构化数据的存在,这些数据很难以类似结构化数据的方式构建出其内部的正式关系;另一方面很多数据以流的形式源源不断的到来,这些需要实时处理的数据很难有足够的时间去建立先验知识。
5.3 大数据隐私问题
    隐私问题由来已久,计算机的出现使得越来越多的数据以数字化的形式存储在电脑中,互联网的发展则使数据更加容易产生和传播,数据隐私问题越来越严重。
    1、隐性的数据暴露。很多时候人们有意识的将自己的行为隐藏起来,试图达到隐私保护的目的。但是互联网,尤其是社交网络的出现,使得人们在不同的地点产生越来越多的数据足迹。这种数据具有累积性和关联性,单个地点的信息可能不会暴露用户的隐私,但是如果有办法将某个人的很多行为从不同的独立地点聚集在一起时,他的隐私就很可能会暴露,因为有关他的信息已经足够多了,这种隐性的数据暴露往往是个人无法预知和控制的。从技术层面来说,可以通过数据抽取和集成来实现用户隐私的获取。而在现实中通过所谓的“人肉搜索”的方式往往能更快速、准确的得到结果,这种人肉搜索的方式实质就是众包(Crowdsourcing)。大数据时代的隐私保护面临着技术和人力层面的双重考验。
    2、数据公开与隐私保护的矛盾。如果仅仅为了保护隐私就将所有的数据都加以隐藏,那么数据的价值根本无法体现。数据公开是非常有必要的,政府可以从公开的数据中来了解整个国民经济社会的运行,以便更好的指导社会的运转。企业则可以从公开的数据中了解客户的行为,从而推出针对性的产品和服务,最大化其利益。研究者则可以利用公开的数据,从社会、经济、技术等不同的角度来进行研究。因此大数据时代的隐私性主要体现在不暴露用户敏感信息的前提下进行有效的数据挖掘,这有别于传统的信息安全领域更加关注文件的私密性等安全属性。统计数据库数据研究中最早开展数据隐私性技术方面的研究,近年来逐渐成为相关领域的研究热点。Dwork 在2006 年提出了新的差分隐私(Differential Privacy)方法。差分隐私保护技术可能是解决大数据中隐私保护问题的一个方向,但是这项技术离实际应用还很远。
    3、数据动态性。大数据时代数据的快速变化除了要求有新的数据处理技术应对之外,也给隐私保护带来了新的挑战。现有隐私保护技术主要基于静态数据集,而在现实中数据模式和数据内容时刻都在发生着变化。因此在这种更加复杂的环境下实现对动态数据的利用和隐私保护将更具挑战。
    5.4 大数据能耗问题
    在能源价格上涨、数据中心存储规模不断扩大的今天,高能耗已逐渐成为制约大数据快速发展的一个主要瓶颈。从小型集群到大规模数据中心都面临着降低能耗的问题,但是尚未引起足够多的重视,相关的研究成果也较少。在大数据管理系统中,能耗主要由两大部分组成:硬件能耗和软件能耗,二者之中又以硬件能耗为主。理想状态下,整个大数据管理系统的能耗应该和系统利用率成正比。但是实际情况并不像预期情况,系统利用率为0的时候仍然有能量消耗。针对这个问题,《纽约时报》和麦肯锡经过一年的联合调查,最终在《纽约时报》上发表文章《Power, Pollution and the Internet》。调查显示Google数据中心年耗电量约为300万瓦,而Facebook则在60万瓦左右。最令人惊讶的是在这些巨大的能耗中,只有6%-12%的能量被用来响应用户的查询并进行计算。绝大部分的电能用以确保服务器处于闲置状态,以应对突如其来的网络流量高峰,这种类型的功耗最高可以占到数据中心所有能耗的80%。从已有的一些研究成果来看,可以考虑以下两个方面来改善大数据能耗问题:
    1、采用新型低功耗硬件。从纽约时报的调查中可以知道绝大部分的能量都耗费在磁盘上。在空闲的状态下,传统的磁盘仍然具有很高的能耗,并且随着系统利用率的提高,能耗也在逐渐升高。新型非易失存储器件的出现,给大数据管理系统带来的新的希望。闪存、PCM等新型存储硬件具有低能耗的特性。虽然随着系统利用率的提高,闪存、PCM等的能耗也有所升高,但是其总体能耗仍远远低于传统磁盘。
    2、引入可再生的新能源。数据中心所使用的电能绝大部分都是从不可再生的能源中产生的。如果能够在大数据存储和处理中引入诸如太阳能、风能之类的可再生能源,将在很大程度上缓解能耗问题。
    5.5 大数据处理与硬件的协同
    硬件的快速升级换代有力的促进了大数据的发展,但是这也在一定程度上造成了大量不同架构硬件共存的局面。日益复杂的硬件环境给大数据管理带来的主要挑战有:
    1、硬件异构性带来的大数据处理难题。整个数据中心(集群)内部不同机器之间的性能会存在着明显的差别,因为不同时期购入的不同厂商的服务器在IOPS、CPU处理速度等性能方面会有很大的差异。这就导致了硬件环境的异构性(Heterogeneous),而这种异构性会给大数据的处理带来诸多问题。一个典型的例子就是MapReduce任务过程中,其总的处理时间很大程度上取决于Map过程中处理时间最长的节点。如果集群中硬件的性能差异过大,则会导致大量的计算时间浪费在性能较好的服务器等待性能较差的服务器上。这种情况下服务器的线性增长并不一定会带来计算能力的线性增长,因为“木桶效应”制约了整个集群的性能。一般的解决方案是考虑硬件异构的环境下将不同计算强度的任务智能的分配给计算能力不同的服务器,但是当这种异构环境的规模扩展到数以万计的集群时问题将变得极为复杂。
    2、新硬件给大数据处理带来的变革。所有的软件系统都是构建在传统的计算机体系结构之上,即CPU-内存-硬盘三级结构。CPU的发展一直遵循着摩尔定律,且其架构已经从单核转入多核。因此需要深入研究如何让软件更好的利用CPU多核心之间的并发机制。由于机械特性的限制,基于磁性介质的硬盘(Hard Disk Drive, HDD)的读写速率在过去几十年中提升不大,而且未来也不太可能出现革命性的提升。基于闪存的固态硬盘(Solid State Disk,SSD)的出现从硬件层为存储系统结构的革新提供了支持,为计算机存储技术的发展和存储能效的提高带来了新的契机。SSD具有很多优良特性,主要包括极高的读写性能、抗震性、低功耗、体积小等,因此正得到越来越广泛的应用。但是直接将SSD应用到现有的软件上并不一定会带来软件性能的大幅提升。Sang-Won Lee等人的研究表明虽然SSD的读写速率是HDD的60~150倍,基于SSD的数据库系统的查询时间却仅仅提升了不到10倍。二者之间的巨大差距主要是由SSD的一些特性造成的,这些特性包括:SSD写前擦除特性导致的读写操作代价不对称、SSD存储芯片的擦除次数有限等。软件设计之时必须仔细考虑这些特性才能够充分利用SSD的优良特性。与大容量磁盘和磁盘阵列相比,固态硬盘的存储容量相对较低,单位容量的价格远高于磁盘。且不同类型的固态硬盘产品性能差异较大,将固态硬盘直接替换磁盘应用到现有的存储体系中难以充分发挥其性能。因此现阶段可以考虑通过构建HDD和SSD的混合存储系统来解决大数据处理问题。当前混合存储系统的实现主要有三种思路:
    HDD作为内存的扩展充当SSD写缓冲;HDD和SSD同做二级存储;SSD用作内存的扩展充当HDD读写缓冲。国外的Google、Facebook,国内的百度、淘宝等公司已经开始在实际运营环境中大规模的使用混合存储系统来提升整体性能。在这三级结构之中,内存的发展处于一个相对缓慢的阶段,一直没有出现革命性的变化。构建任何一个软件系统都会假设内存是一个容量有限的易失结构体。随着以PCM为代表的SCM的出现,未来的内存极有可能会兼具现在内存和磁盘的双重特性,即处理速度极快且非易失。虽然PCM尚未有可以大规模量产的产品推出,但是各大主流厂商都对其非常重视,三星电子在2012年国际固态电路会议(ISSCC 2012)上发表了采用20nm工艺制程的容量为8G的PCM元件。一旦PCM能够大规模的投入使用,必将给现有的大数据处理带来一场根本性的变革。譬如前面提到的流处理模式就可以不再将内存的大小限制作为算法设计过程中的一个主要考虑因素。
 5.6 大数据管理易用性(Usability)问题
    从数据集成到数据分析,直到最后的数据解释,易用性应当贯穿整个大数据的流程。易用性的挑战突出体现在两个方面:首先大数据时代的数据量大,分析更复杂,得到的结果形式更加的多样化。其复杂程度已经远远超出传统的关系数据库。其次大数据已经广泛渗透到人们生活的各个方面,很多行业都开始有了大数据分析的需求。但是这些行业的绝大部分从业者都不是数据分析的专家,在复杂的大数据工具面前,他们只是初级的使用者(NaïveUsers)。复杂的分析过程和难以理解的分析结果限制了他们从大数据中获取知识的能力。这两个原因导致易用性成为大数据时代软件工具设计的一个巨大挑战。关于大数据易用性的研究仍处于一个起步阶段。从设计学的角度来看易用性表现为易见(Easy to discover)、易学(Easyto learn)和易用 (Easy to use)。要想达到易用性,需要关注以下三个基本原则[138]:
    1、可视化原则(Visibility)。可视性要求用户在见到产品时就能够大致了解其初步的使用方法,最终的结果也要能够清晰的展现出来。针对MapReduce 使用复杂的情况,未来如何实现更多大数据处理方法和工具的简易化和自动化将是一个很大的挑战。除了功能设计之外,最终结果的展示也要充分体现可视化的原则。可视化技术是最佳的结果展示方式之一,通过清晰的图形图像展示直观的反映出最终结果。但是超大规模的可视化却面临着诸多挑战,主要有:原位分析;用户界面与交互设计;大数据可视化;数据库与存储;算法;数据移动、传输和网络架构;不确定性的量化;并行化;面向领域与开发的库、框架以及工具;社会、社区以及政府参与。
    2、匹配原则(Mapping)。人的认知中会利用现有的经验来考虑新的工具的使用。譬如一提到数据库,了解的人都会想到使用SQL 语言来执行数据查询。在新工具的设计过程中尽可能将人们已有的经验知识考虑进去,会使得新工具非常便于使用,这就是所谓的匹配原则。MapReduce 模型虽然将复杂的大数据处理过程简化为Map 和Reduce 的过程,但是具体的Map 和Reduce 函数仍需要用户自己编写,这对于绝大部分没有编程经验的用户而言仍过于复杂。如何将新的大数据处理技术和人们已经习惯的处理技术和方法进行匹配将是未来大数据易用性的一个巨大挑战。这方面现在已经有了些初步的研究工作。针对 MapReduce 技术缺乏类似SQL 标准语言的弱点,研究人员开发出更高层的语言和系统。典型代表有Hadoop的HiveQL和Pig Latin、Google 的 Sawzall、微软的SCOPE和DryadLINQ以及MRQL等。SQL 查询有自动优化的过程,而MapReduce 并没有。针对这点,和实现了MapReduce 的查询优化器。通过调研发现系统I/O 冗余是由于查询之间的关联(correlations),为了解决这个问题,作者引入了BSP(Batched Stream Processing)模型,并在DryadLINQ 中实现了查询优化系统Comet。还有部分学者的工作集中在将SQL 语言自动转化成MapReduce 任务。比较代表性的系统有YSmart、Tenzing等。还有一些其他的工作,比如S4Latin在S4 的基础上实现了一个新的数据处理框架,使得用户可以直接用类似查询的方式而不是编程的方式创建新的流应用。这在很大程度上改善了大数据流处理平台S4 的易用性。
    3、反馈原则(Feedback)。带有反馈的设计使得人们能够随时掌握自己的操作进程。进度条就是一个体现反馈原则的经典例子。大数据领域关于这方面的工作较少,有部分学者开始关注MapReduce 程序执行进程的估计。传统的软件工程领域,程序出现问题之后有比较成熟的调试工具可以对错误的程序进行交互式的调试,相对容易找到错误的根源。但是大数据时代很多工具其内部结构复杂,对于普通用户而言这些工具近似于黑盒(black box),调试过程复杂,缺少反馈性。PerfXplain设计并实现了MapReduce 的简便化调试系统。为了解决大数据云(Big Data Cloud)中程序部署和调试的问题,实现了一个可扩展的轻量级Hadoop 性能分析器HiTune。如果未来能够在大数据的处理中大范围的引入人机交互技术,使得人们能够较完整的参与整个分析过程,会有效的提高用户的反馈感,在很大程度上提高易用性。
    满足三个基本原则的设计就能够达到良好的易用性。从技术层面来看,可视化、人机交互以及数据起源技术都可以有效的提升易用性。而在这些技术的背后,海量元数据管理的问题是需要我们特别关注的一个问题。元数据是关于数据的数据,数据之间的关联关系以及数据本身的一些属性大都是靠元数据来表示的。可视化技术离不开元数据的支持,因为如果无法准确的表征出数据之间的关系,就无法对数据进行可视化的展示。数据起源技术更是离不开元数据管理技术。因为数据起源需要利用元数据来记录数据之间包括因果关系在内的各种复杂关系,并通过这些信息来进行相关的推断。如何在大规模存储系统中实现海量元数据的高效管理将会对大数据的易用性产生重要影响。
    5.7 性能的测试基准(Benchmark)
    关系数据库产品的成功离不开以TPC 系列为代表的测试基准的产生。正是有了这些测试基准,才能够准确的衡量不同数据库产品的性能,并对其存在的问题进行改进。目前尚未有针对大数据管理的测试基准,构建大数据测试基准面临的主要挑战有:
    1、系统复杂度高。大数据管理系统的类型非常多,很多公司针对自己的应用场景设计了相应的数据库产品。这些产品的功能模块各异,很难用一个统一的模型来对所有的大数据产品进行建模。
    2、用户案例的多样性。测试基准需要定义一系列具有代表性的用户行为,但是大数据的数据类型广泛,应用场景也不尽相同,很难从中提取出具有代表性的用户行为。
    3、数据规模庞大。这会带来了两方面的挑战。首先数据规模过大使得数据重现非常困难,代价很大。其次在传统的 TPC 系列测试中,测试系统的规模往往大于实际客户使用的数据集,因此测试的结果可以准确的代表系统的实际性能。但是在大数据时代,用户实际使用系统的数据规模往往大于测试系统的数据规模,因此能否用小规模数据的测试基准来代表实际产品的性能是目前面临的一个挑战。数据重现的问题可以尝试利用一定的方法来去产生测试样例,而不是选择下载某个实际的测试数据集。但是这又涉及到如何使产生的数据集能真实反映原始数据集的问题。
    4、系统的快速演变。传统的关系数据库其系统架构一般比较稳定,但是大数据时代的系统为了适应数据规模的不断增长和性能要求的不断提升,必须不断的进行升级,这使得测试基准得到的测试结果很快就不能反映系统当前的实际性能。
    5、重新构建还是复用现有的测试基准。如果能够在现有的测试基准中选择合适的进行扩展的话,那么将极大减少构建新的大数据测试基准的工作量。可能的候选测试标准有SWIM(Statistical Workload Injector for MapReduce)、MRBS、Hadoop 自带的GridMix、TPC-DS、YCSB++等。
    现在已经开始有工作尝试构建大数据的测试基准,比如一些针对大数据测试基准的会议WBDB 2012、TPCTC 2012 等。但是也有观点认为当前讨论大数据测试基准的构建为时尚早。Yanpei Chen 等通过对7 个应用MapReduce 技术的实际产品的负载进行了跟踪和分析,认为现在根本无法确定大数据时代的典型用户案例。因此从这个角度来看并不适合构建大数据的测试基准,还有很多基础性的问题亟待解决。
    总的来说,构建大数据的测试基准是有必要的。但是面临的挑战非常多,要想构建一个类似TPC 的公认的测试标准难度很大。
6、结论
    随着云计算、物联网等的发展,数据呈现爆炸式的增长,人们正被数据洪流所包围,大数据的时代已经到来。正确利用大数据给人们的生活带来了极大的便利,但于此同时也给传统的数据管理方式带来了极大的挑战。本文对最近几年国内外大数据相关的研究成果进行了全面的回顾和总结,介绍了大数据的基本概念,详细分析了大数据管理的关键技术,主要是阐述云计算技术对于大数据管理的基础性作用。本文还着重介绍了目前大数据研究面临的新挑战以及相应的一些研究成果。总的来说,眼下对于大数据的研究仍处于一个非常初步的阶段,还有很多基础性的问题有待解决。大数据的几个特征中究竟哪个最重要?面对大数据管理我们需要的是简单的技术上的演变(Evolution)还是彻底的变革(Revolution)?不同学科的研究者之间怎样协作才能更有利于大数据问题的解决?诸如此类的问题还有许多,要解决大数据问题仍有很长的路要走,期望本文的介绍能给大数据研究同行学者提供一定的参考。