本节书摘来自华章出版社《大数据管理概论》一书中的第1章,第1.5节,作者 孟小峰,更多章节内容可以访问云栖社区“华章计算机”公众号查看
1.5 大数据管理的关键技术
综上所述,大数据时代的数据存在如下几个特点:多源异构、分布广泛、动态增长、先有数据后有模式。正是这些与传统数据管理迥然不同的特点,使得大数据时代的数据管理面临着新的挑战,下面会对其中的主要挑战进行详细分析。
1.5.1 大数据融合
数据的广泛存在性使得数据越来越多地散布于不同的数据管理系统中,为了便于进行数据分析,需要进行数据集成。数据集成看起来并不是一个新的问题,但是大数据时代的数据集成却有新的需求,因此也面临着新的挑战。
1)广泛的异构性。传统的数据集成也会面对数据异构的问题,但是在大数据时代这种异构性出现了新的变化。主要体现在:①数据类型从以结构化数据为主转向结构化、半结构化、非结构化三者的融合。②数据产生方式的多样性带来了数据源的变化。传统的电子数据主要产生于服务器或者是个人计算机,这些设备位置相对固定。随着移动终端的快速发展,手机、平板电脑和GPS等产生的数据量呈现爆炸式增长,且产生的数据带有很明显的时空特性。③数据存储方式发生变化。传统数据主要存储在关系数据库中,但越来越多的数据迫使人们开始采用新的数据存储方式来应对数据爆炸,比如存储在Hadoop的HDFS中。这就必然要求在集成的过程中进行数据转换,而这种转换的过程是非常复杂和难以管理的。
2)数据质量。数据量大不一定就代表信息量或者数据价值的增大,相反很多时候意味着信息垃圾的泛滥。一方面很难有单个系统能够容纳下从不同数据源集成的海量数据;另一方面如果在集成的过程中仅仅简单地将所有数据聚集在一起而不进行任何数据清洗,会使得过多的无用数据干扰后续的数据分析过程。大数据时代的数据清洗过程必须更加谨慎,因为相对细微的有用信息混杂在庞大的数据量中。如果信息清洗的粒度过细,很容易将有用的信息过滤掉;清洗的粒度过粗,又无法达到真正的清洗效果,因此在质与量之间需要进行仔细的考量和权衡。
1.5.2 大数据分析
传统意义上的数据分析主要针对结构化数据展开,且已经形成了一整套行之有效的分析体系。首先利用数据库来存储结构化数据,在此基础上构建数据仓库,根据需要构建数据立方体进行联机分析处理(Online Analytical Processing,OLAP),可以进行多个维度的下钻(drill-down)或上卷(roll-up)操作。对于从数据中提炼更深层次的知识的需求导致数据挖掘技术的产生,并促使人们发明了聚类、关联分析等一系列在实践中行之有效的方法。这一整套处理流程在处理相对较少的结构化数据时极为高效。但是随着大数据时代的到来,半结构化和非结构化数据量的迅猛增长给传统的分析技术带来了巨大的冲击和挑战,主要体现在如下几方面。
1)数据处理的实时性。随着时间的流逝,数据中所蕴含的知识价值往往也在衰减,因此很多领域对于数据的实时处理有需求。随着大数据时代的到来,更多应用场景的数据分析从离线转向了在线,开始出现实时处理的需求,比如KDD 2012最佳论文[3]所探讨的实时广告竞价问题。大数据时代的数据实时处理面临着一些新的挑战,主要体现在数据处理模式的选择及改进上。在实时处理的模式选择中,主要有三种思路,即流处理模式、批处理模式以及二者的融合。相关研究成果在上一节已经有详细介绍。虽然已有的研究成果很多,但是仍未有一个通用的大数据实时处理框架。各种工具实现实时处理的方法不一,支持的应用类型都相对有限,这导致实际应用中往往需要根据自己的业务需求和应用场景对现有技术和工具进行改造。
2)动态变化环境中索引的设计。关系数据库中的索引能够加速查询速率,但是传统的数据管理中模式基本不会发生变化,因此在其上构建索引主要考虑的是索引创建、更新等的效率。大数据时代的数据模式随着数据量的不断变化可能会处于不断的变化之中,这就要求索引结构的设计要简单、高效,能够在数据模式发生变化时很快进行调整来适应。在数据模式变更的假设前提下设计新的索引方案将是大数据时代的主要挑战之一。
3)先验知识的缺乏。传统分析主要针对结构化数据展开,这些数据在以关系模型进行存储的同时就隐含了这些数据内部关系等先验知识。比如我们知道所要分析的对象会有哪些属性,通过属性我们又能大致了解其可能的取值范围等。这些知识使得我们在进行数据分析之前就已经对数据有了一定的理解。而在面对大数据分析时,一方面是半结构化和非结构化数据的存在,这些数据很难以类似结构化数据的方式构建出其内部的正式关系;另一方面很多数据以流的形式源源不断地到来,对这些需要实时处理的数据很难有足够的时间去建立先验知识。
1.5.3 大数据隐私
隐私问题由来已久,计算机的出现使得越来越多的数据以数字化形式存储在计算机中,互联网的发展则使数据更加容易产生和传播,数据隐私问题越来越严重。
1)隐性的数据暴露。很多时候人们会有意识地将自己的行为隐藏起来,试图达到隐私保护的目的。但是互联网,尤其是社交网络的出现,使得人们在不同的地点产生越来越多的数据足迹。这种数据具有累积性和关联性,单个地点的信息可能不会暴露用户的隐私,但是如果有办法将某个人的很多行为从不同的独立地点聚集在一起,他的隐私就很可能会暴露,因为有关他的信息已经足够多了,这种隐性的数据暴露往往是个人无法预知和控制的。从技术层面来说,可以通过数据抽取和集成来实现用户隐私的获取。而在现实中通过所谓的“人肉搜索”的方式往往能更快速、准确地得到结果,这种人肉搜索的方式实质就是众包。大数据时代的隐私保护面临着技术和人力层面的双重考验。
2)数据公开与隐私保护的矛盾。如果仅仅为了保护隐私就将所有的数据加以隐藏,那么数据的价值根本无法体现。数据公开是非常有必要的,*可以从公开的数据中来了解整个国民经济社会的运行,以便更好地指导社会运转。企业则可以从公开的数据中了解客户的行为,从而推出具有针对性的产品和服务,最大化其利益。研究者则可以利用公开的数据,从社会、经济、技术等不同的角度来进行研究。因此大数据时代的隐私性主要体现在不暴露用户敏感信息的前提下进行有效的数据挖掘,这有别于传统的信息安全领域更加关注文件的私密性等安全属性的情况。统计数据库数据研究中最早开展数据隐私性技术方面的研究,近年来此项技术逐渐成为相关领域的研究热点,比如很多学者致力于隐私保护数据挖掘[4]方面的研究。主要集中于研究新型的数据发布技术,尝试在尽可能少地损失数据信息的同时最大化地隐藏用户隐私。但是数据信息量和隐私之间是有矛盾的,因此尚未出现非常好的解决办法。Dwork于2006年提出了新的差分隐私(differential privacy)[5]
方法。差分隐私保护技术可能是解决大数据中隐私保护问题的一个方向,但是这项技术离实际应用还很远。
3)数据动态性。大数据时代数据的快速变化除了要求有新的数据处理技术应对之外,也给隐私保护带来了新的挑战。现有隐私保护技术主要基于静态数据集,而在现实中数据模式和数据内容时刻都在发生着变化。因此在这种更加复杂的环境下实现对动态数据的利用和隐私保护将更具挑战性。
1.5.4 大数据能耗
在能源价格上涨、数据中心存储规模不断扩大的今天,高能耗已逐渐成为制约大数据快速发展的一个主要瓶颈。从小型集群到大规模数据中心都面临着降低能耗的问题,但是尚未引起足够多的重视,相关的研究成果也较少。在大数据管理系统中,能耗主要由两大部分组成:硬件能耗和软件能耗,二者之中又以硬件能耗为主。在理想状态下,整个大数据管理系统的能耗应该与系统利用率成正比。但是实际情况并不符合预期,系统利用率较低时仍然有较高的能量消耗[6]。针对这个问题,《纽约时报》和麦肯锡公司经过一年的联合调查,最终在《纽约时报》上发表文章“Power, Pollution and the Internet”[7]。调查显示Google数据中心年耗电量约为300万瓦,而Facebook则在60万瓦左右。最令人惊讶的是在这些巨大的能耗中,只有6%~12%的能量被用来响应用户的查询并进行计算。绝大部分的电能用以确保服务器处于闲置状态,以应对突如其来的网络流量高峰,这种类型的功耗最高可以占到数据中心所有能耗的80%。从已有的一些研究成果来看,可以考虑以下两个方面来改善大数据能耗问题。
1)采用新型低功耗硬件。从《纽约时报》的调查中可以知道绝大部分的能量都耗费在磁盘上。在空闲的状态下,传统的磁盘仍然具有很高的能耗,并且随着系统利用率的提高,能耗也在逐渐升高。新型非易失存储器件的出现给大数据管理系统带来了新的希望,如闪存、PCM等新型存储硬件具有低能耗的特性。虽然随着系统利用率的提高,闪存、PCM等的能耗也有所升高,但是其总体能耗仍远远低于传统磁盘。
2)引入可再生的新能源。数据中心所使用的电能绝大部分都是从不可再生的能源中产生的。如果能够在大数据存储和处理中引入诸如太阳能、风能之类的可再生能源,将在很大程度上缓解对不可再生能源的消耗问题。这方面的工作很少,参考文献[8]探讨了如何利用太阳能构建一个绿色环保的数据库。
1.5.5 大数据处理与硬件的协同
硬件的快速升级换代有力地促进了大数据的发展,但是这也在一定程度上造成了大量不同架构硬件共存的局面。日益复杂的硬件环境给大数据管理带来的主要挑战有如下两点。
1)硬件异构性带来的大数据处理难题。整个数据中心(集群)内部不同机器之间的性能会存在明显的差别,因为不同时期购入的不同厂商的服务器在IOPS、CPU处理速度等性能方面会有很大的差异。这就导致了硬件环境的异构性,而这种异构性会给大数据的处理带来诸多问题。一个典型的例子就是在MapReduce任务过程中,其总的处理时间很大程度上取决于Map过程中处理时间最长的节点。如果集群中硬件的性能差异过大,则会导致大量的计算时间浪费在性能较好的服务器等待性能较差的服务器上。在这种情况下服务器的线性增长并不一定会带来计算能力的线性增长,因为“木桶效应”制约了整个集群的性能。一般的解决方案是考虑硬件异构的环境下将不同计算强度的任务智能地分配给计算能力不同的服务器,但是当这种异构环境的规模扩展到数以万计的集群时问题将变得极为复杂。
2)新硬件给大数据处理带来的变革。所有的软件系统都构建在传统的计算机体系结构(即CPU-内存-硬盘三级结构)之上。CPU的发展一直遵循着摩尔定律,且其架构已经从单核转入多核,因此需要深入研究如何让软件更好地利用CPU多核心之间的并发机制。由于机械特性的限制,基于磁性介质的机械硬盘(Hard Disk Drive,HDD)的读写速率在过去几十年中提升不大,而且未来也不太可能出现革命性提升。基于闪存的固态硬盘(Solid State Disk,SSD)的出现从硬件层为存储系统结构的革新提供了支持,为计算机存储技术的发展和存储能效的提高带来了新的契机。SSD具有很多优良特性,主要包括极高的读写性能、较好的抗震性、较低的功耗、较小的体积等,因此正得到越来越广泛的应用。但是直接将SSD应用到现有的软件上并不一定会带来软件性能的大幅提升,比如SSD的读写速率是HDD的60~150倍,基于SSD的数据库系统的查询时间却仅仅提升了不到10倍[9]。
二者之间的巨大差距主要是由SSD的一些特性造成的,这些特性包括SSD写前擦除特性导致的读写操作代价不对称、SSD存储芯片的擦除次数有限等。软件设计之时必须仔细考虑这些特性才能够充分利用SSD的优良特性。与大容量磁盘和磁盘阵列相比,固态硬盘的存储容量相对较低,单位容量的价格远高于磁盘,不同类型的固态硬盘产品性能差异较大。且将固态硬盘直接替换磁盘应用到现有的存储体系中难以充分发挥其性能。因此现阶段可以考虑通过构建HDD和SSD的混合存储系统来解决大数据处理问题。当前混合存储系统的实现主要有三种思路:HDD作为内存的扩展充当SSD写缓冲;HDD和SSD同时用作二级存储;SSD用作内存的扩展充当HDD读写缓冲。国外的Google、Facebook,国内的百度、淘宝等公司已经开始在实际运营环境中大规模使用混合存储系统来提升整体性能。在这三级结构之中,内存的发展处于一个相对缓慢的阶段,一直没有出现革命性变化。构建任何一个软件系统都会假设内存是一个容量有限的易失结构体。随着以PCM为代表的SCM的出现,未来的内存极有可能会兼具现在内存和磁盘的双重特性,即处理速度极快且非易失。虽然PCM尚未有可以大规模量产的产品推出,但是各大主流厂商都对其非常重视,三星电子在2012年国际固态电路会议(ISSCC 2012)上发表了采用20 nm工艺制程的容量为8 GB的PCM元件。一旦PCM能够大规模投入使用,必将给现有的大数据处理带来一场根本性变革。譬如前面提到的流处理模式就可以不再将内存的大小限制作为算法设计过程中的一个主要考虑因素。