随着互联网与计算机系统需要处理的数据量越来越大,大数据计算逐渐成为一种重要的数据分析处理模式。当前在大数据计算方面,主要模式有基于MapReduce的批处理计算、流式计算、基于Spark的内存计算。下面简单介绍这三种计算模式。
批处理计算是指先对数据进行存储,然后再对存储的静态数据进行集中计算。MapReduce是大数据分析处理方面最成功的主流计算模式,被广泛用于大数据的线下批处理分析计算。
MapReduce计算模式的主要思想是将要执行的问题(例如程序)拆解成Map和Reduce两个函数操作,然后对分块的大数据采用“分而治之”的并行处理方式分析和计算数据。MapReduce计算流程如图1-9所示,通过Map函数的程序将数据映射成不同的分块,分配给计算机集群处理以达到分布式运算的效果,再通过Reduce函数的程序将结果汇总,输出所需要的结果。MapReduce提供了一个统一的并行计算框架,把并行计算涉及的诸多系统层细节都交给计算框架去完成,因此大大减轻了程序员进行并行化程序设计的负担。
图1-9 MapReduce计算流程
大数据批处理计算关注数据处理的吞吐量,而大数据流式计算更关注数据处理的实时性。如图1-10所示,在流式计算中,无法确定数据的到来时刻和到来顺序,也无法将全部数据存储起来。因此不再进行流式数据的存储,而是当流动的数据到来后在内存中直接进行数据的实时计算。流式计算具有很强的实时性,需要对应用源源不断产生的数据实时地进行处理,使数据不积压、不丢失,常用于处理电信、电力等行业应用以及互联网行业的访问日志等。Facebook的Scribe、Apache的Flume、Twitter的Storm、Yahoo的S4、UC Berkeley的Spark Streaming都是典型的流式计算系统。
图1-10 大数据流式计算
Spark是UC Berkeley AMP实验室开源的类似Hadoop MapReduce的分布式计算框架,输出和结果保存在内存中,不需要频繁读写HDFS,数据处理效率更高。如图1-11所示,由于在MapReduce计算过程中需要读写HDFS存储(访问磁盘I/O),而在Spark内存计算过程中,使用内存替代了使用HDFS存储中间结果,即在进行大数据分析处理时使用分布式内存计算,访问内存要比访问磁盘快得多,因此,基于Spark的内存计算的数据处理性能会提高很多,特别是针对需要多次迭代大数据计算的应用。
图1-11 Spark内存计算