大数据技术原理与应用:概念、存储、处理、分析与应用(第3版)
上QQ阅读APP看书,第一时间看更新

1.6 大数据计算模式

MapReduce 是大家熟悉的大数据处理技术,当人们提到大数据时就会很自然地想到MapReduce,可见其影响力之广。实际上,大数据处理的问题复杂多样,单一的计算模式是无法满足不同类型的计算需求的,MapReduce其实只是大数据计算模式中的一种,它代表了针对大规模数据的批量处理技术,除此以外,还有批处理计算、流计算、图计算、查询分析计算等多种大数据计算模式(见表1-6)。

表1-6 大数据计算模式及其代表产品

1.6.1 批处理计算

批处理计算主要解决针对大规模数据的批量处理,也是我们日常数据分析工作中非常常见的一类数据处理需求。MapReduce是最具有代表性和影响力的大数据批处理技术,可以并行执行大规模数据处理任务,用于大规模数据集(大于1 TB)的并行运算。MapReduce极大地方便了分布式编程工作,它将复杂的、运行于大规模集群上的并行计算过程高度地抽象为两个函数—Map和Reduce,编程人员在不会分布式并行编程的情况下,也可以很容易地将自己的程序运行在分布式系统上,完成海量数据集的计算。

Spark是一个针对超大数据集合的低延迟的集群分布式计算系统,比MapReduce快许多。Spark启用了内存分布数据集,除了能够提供交互式查询外,还可以优化迭代工作负载。在MapReduce中,数据流从一个稳定的来源进行一系列加工处理后,流出到一个稳定的文件系统(如HDFS)。而Spark使用内存替代HDFS或本地磁盘来存储中间结果,因此Spark要比MapReduce的速度快许多。

1.6.2 流计算

流数据也是大数据分析中的重要数据类型。流数据(或数据流)是指在时间分布和数量上无限的一系列动态数据集合体,数据的价值随着时间的流逝而降低,因此必须采用实时计算的方式给出秒级响应。流计算可以实时处理来自不同数据源的、连续到达的流数据,经过实时分析处理,给出有价值的分析结果。目前业内已涌现出许多的流计算框架与平台,第一类是商业级的流计算平台,包括IBM InfoSphere Streams和IBM StreamBase等;第二类是开源流计算框架,包括Twitter Storm、Yahoo! S4(Simple Scalable Streaming System)、Spark Streaming、Flink等;第三类是公司为支持自身业务开发的流计算框架,如百度开发了通用实时流数据计算系统 DStream,淘宝开发了通用流数据实时计算系统—银河流数据处理平台。

1.6.3 图计算

在大数据时代,许多大数据都是以大规模图或网络的形式呈现的,如社交网络、传染病传播途径、交通事故对路网的影响等。此外,许多非图结构的大数据也常常会被转换为图模型后再进行处理分析。MapReduce作为单输入、两阶段、粗粒度数据并行的分布式计算框架,在表达多迭代、稀疏结构和细粒度数据时,往往显得力不从心,不适合用来解决大规模图计算问题。因此,针对大型图的计算,需要采用图计算模式,目前已经出现了不少相关图计算产品。比如谷歌公司的Pregel就是一个用于分布式图计算的计算框架,主要用于PageRank计算、最短路径和图遍历等。其他代表性的图计算产品还包括Spark生态系统中的GraphX、Flink生态系统中的Gelly、图数据处理系统PowerGraph等。

1.6.4 查询分析计算

针对超大规模数据的存储管理和查询分析,需要提供实时或准实时的响应,才能很好地满足企业经营管理需求。谷歌公司开发的Dremel是一种可扩展的、交互式的实时查询系统,用于只读嵌套数据的分析。通过结合多级树状执行过程和列式数据结构,它能做到几秒内完成对万亿张表的聚合查询。系统可以扩展到成千上万的CPU上,满足谷歌上万用户操作PB级的数据,并且可以在2~3s内完成PB级别数据的查询。此外,Cloudera公司参考Dremel系统开发了实时查询引擎Impala,它提供结构化查询语言(Structure Query Language,SQL)语义,能快速查询存储在Hadoop的HDFS和HBase中的PB级大数据。