1.4.2 大数据分析技术
数据分析是大数据应用最核心的技术之一,每一次简单的网络点击背后都需要进行复杂的分析过程。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~40s中处理7820亿个单元格的数据,处理速度快于Dremel。二者的应用场景不同,可以相互补充。
微软提出了一个类似MapReduce的数据处理模型,称为Dryad,Dryad模型主要用来构建支持有向无环图(Directed Acycline Graph,DAG)类型数据流的并行程序。Cascading通过对Hadoop MapReduce API的封装,支持有向无环图类型的应用。Sector/sphere可以视为一种流式的MapReduce,它由分布式文件系统Sector和并行计算框架sphere组成。Nephele/PACTs则包括PACTs(Parallelization Contracts)编程模型和并行计算引擎Nephele。MapReduce模型基本成为批处理类应用的标准处理模型,很多应用开始尝试利用MapReduce加速其数据处理。
实时数据处理是大数据分析的一个核心需求。很多研究工作正是围绕这一需求展开的。前面介绍了大数据处理的两种基本模式,而在实时处理的模式选择中,主要有以下3种思路:
(1)采用流处理模式。虽然流处理模式天然适合实时处理系统,但其适用领域相对有限。流处理模型的应用主要集中在实时统计系统、在线状态监控等。
(2)采用批处理模式。近几年来,利用批处理模型开发实时系统已经成为研究热点并取得了很多成果。从增量计算的角度出发,Google提出了增量处理系统Percolator,微软则提出了Nectar和DryadInc。三者均实现了大规模数据的增量计算。
(3)二者的融合。有不少研究人员尝试将流处理和批处理模式进行融合,主要思路是利用MapReduce模型实现流处理。