大数据的计算模式可以分为批量计算(batch computing)和流式计算(stream computing)
两种形态。批量计算首先进行数据的存储,然后对存储的静态数据进行集中计算。Hadoop 是典型的大数据批量计算架构,由HDFS 分布式文件系统负责静态数据的存储,并通过MapReduce 将计算逻辑分配到各数据节点进行数据计算和价值发现。
在流式计算中,无法确定数据的到来时刻和到来顺序,也无法将全部数据存储起来。因此,不再进行流式数据的存储,而是当流动的数据到来后,在内存中直接进行数据的实时计算。例如Twitter 的Storm、Yahoo 的S4 就是典型的流式数据计算架构,数据在任务拓扑中被计算,并输出有价值的信息。
流式计算和批量计算分别适用于不同的大数据应用场景。对于先存储后计算,实时性要求不高,同时数据的准确性、全面性更为重要的应用场景,批量计算模式更合适;对于无须先存储,可以直接进行数据计算,实时性要求很严格,但数据的精确度要求稍微宽松的应用场景,流式计算具有明显优势。流式计算中,数据往往是最近一个时间窗口内的,因此数据延迟往往较短,实时性较强,但数据的精确程度往往较低。流式计算和批量计算具有明显的优劣互补特征,在多种应用场合下可以将两者结合起来使用。通过发挥流式计算的实时性优势和批量计算的精度优势,满足多种应用场景在不同阶段的数据计算要求。
目前,关于大数据批量计算相关技术的研究相对成熟,形成了以谷歌的MapReduce 编程模型、开源的Hadoop 计算系统为代表的高效、稳定的批量计算系统,在理论上和实践中均取得了显著成果。现有的大数据流式计算系统实例有Storm 系统、Kafka 系统、Spark 系统等。