深入了解大数据计算模式

1. 批处理计算

批处理计算主要解决针对大规模数据的批量处理,也是我们日常数据分析工作中非常常见的一类数据处理需求。

MapReduce是最具有代表性和影响力的大数据批处理技术,可以并行执行大规模数据处理任务,用于大规模数据集(大于1 TB)的并行运算。

MapReduce极大地方便了分布式编程工作,它将复杂的、运行于大规模集群上的并行计算过程高度地抽象到了

两个函数——Map和Reduce上,编程人员在不会分布式并行编程的情况下,也可以很容易地将自己的程序运行在分布式系统上,

完成海量数据集的计算。

Spark是一个针对超大数据集合的低延迟的集群分布式计算系统,比MapReduce快许多。

Spark启用了内存分布数据集,除了能够提供交互式查询外,还可以优化迭代工作负载。

在MapReduce中,数据流从一个稳定的来源进行一系列加工处理后,流出到一个稳定的文件系统(如HDFS)。

而对于Spark而言,则使用内存替代HDFS或本地磁盘来存储中间结果,因此Spark要比MapReduce的速度快许多。

2. 流计算

流数据也是大数据分析中的重要数据类型。

流数据(或数据流)是指在时间分布和数量上无限的一系列动态数据集合体,数据的价值随着时间的流逝而降低,因此必须采用实时计算的方式给出秒级响应。

流计算可以实时处理来自不同数据源的、连续到达的流数据,经过实时分析处理,给出有价值的分析结果。

目前业内已涌现出许多的流计算框架与平台,

第一类是商业级的流计算平台,包括IBM InfoSphere Streams和IBM StreamBase等;

第二类是开源流计算框架,包括 Twitter Storm、Yahoo! S4(Simple Scalable Streaming System)、Spark Streaming 等;

第三类是公司为支持自身业务开发的流计算框架,如 Facebook 使用 Puma 和HBase 相结合来处理实时数据,

百度开发了通用实时流数据计算系统 DStream,淘宝开发了通用流数据实时计算系统——银河流数据处理平台。

3. 图计算

在大数据时代,许多大数据都是以大规模图或网络的形式呈现,如社交网络、传染病传播途径、交通事故对路网的影响等,

此外,许多非图结构的大数据也常常会被转换为图模型后再进行处理分析。

MapReduce作为单输入、两阶段、粗粒度数据并行的分布式计算框架,在表达多迭代、稀疏结构和细粒度数据时,往往显得力不从心,不适合用来解决大规模图计算问题。

因此,针对大型图的计算,需要采用图计算模式,目前已经出现了不少相关图计算产品。

Pregel 是一种基于BSP(Bulk Synchronous Parallel)模型实现的并行图处理系统。

为了解决大型图的分布式计算问题,Pregel 搭建了一套可扩展的、有容错机制的平台,该平台提供了一套非常灵活的 API,

可以描述各种各样的图计算。Pregel主要用于图遍历、最短路径、PageRank计算等。

其他代表性的图计算产品还包括 Facebook 针对 Pregel 的开源实现 Giraph、Spark 下的GraphX、图数据处理系统PowerGraph

等。

4. 查询分析计算

针对超大规模数据的存储管理和查询分析,需要提供实时或准实时的响应,才能很好地满足企业经营管理需求。

谷歌公司开发的Dremel是一种可扩展的、交互式的实时查询系统,用于只读嵌套数据的分析。

通过结合多级树状执行过程和列式数据结构,它能做到几秒内完成对万亿张表的聚合查询。

系统可以扩展到成千上万的CPU上,满足谷歌上万用户操作PB级的数据,并且可以在2~3s内完成PB级别数据的查询。

此外,Cloudera公司参考Dremel系统开发了实时查询引擎Impala,它提供SQL语义,能快速查询存储在Hadoop的HDFS和HBase

中的PB级大数据。

参考文献:《大数据原理与应用》第二版

发布了141 篇原创文章 · 获赞 38 · 访问量 7万+

猜你喜欢

转载自blog.csdn.net/baidu_35901646/article/details/104505216