mapreduce和storm两者处理数据的差异!

数据处理对于从事数据工作的朋友是每天日常工作了,但全量数据处理也常常借助系统软件,比如最常用的是hadoop、hive、apachestorm等等.今天我们大圣众包(www.dashengzb.cn)小编就为大家解答下mapreduce和storm这两者之间的区别,它们做数据处理过程的差异!

mapreduce和storm两者处理数据的差异!_第1张图片

首先,先来说下storm是典型的流计算系统,mapreduce是典型的批处理系统。

下面,我们把整个数据处理流程分三个阶段来说:

1)数据采集阶段

目前典型的处理处理策略:数据的产生系统一般出自页面打点和解析DB的log,流计算将数据采集中消息队列(比如kafaka,metaQ,timetunle)等。批处理系统一般将数据采集进分布式文件系统(比如HDFS),当然也有使用消息队列的。我们暂且把消息队列和文件系统称为预处理存储。二者在延时和吞吐上没太大区别,接下来从这个预处理存储进入到数据计算阶段有很大的区别,流计算一般在实时的读取消息队列进入流计算系统(storm)的数据进行运算,批处理一系统一般会攒一大批后批量导入到计算系统(hadoop),这里就有了时延的区别。

mapreduce和storm两者处理数据的差异!_第2张图片

2)数据计算阶段

流计算系统(storm)的时延低主要有一下几个方面

A:storm进程是常驻的,有数据就可以进行实时的处理

mapreduce数据攒一批后由作业管理系统启动任务,Jobtracker计算任务分配,tasktacker启动相关的运算进程

B:stom每个计算单元之间数据之间通过网络(zeromq)直接传输。

mapreducemap任务运算的结果要写入到HDFS,在于reduce任务通过网络拖过去运算。相对来说多了磁盘读写,比较慢

C:对于复杂运算

storm的运算模型直接支持DAG(有向无环图)

mapreduce需要肯多个MR过程组成,有些map操作没有意义的

mapreduce和storm两者处理数据的差异!_第3张图片

3)数据结果展现

流计算一般运算结果直接反馈到最终结果集中(展示页面,数据库,搜索引擎的索引)。而mapreduce一般需要整个运算结束后将结果批量导入到结果集中。

实际流计算和批处理系统没有本质的区别,像storm的trident也有批概念,而mapreduce可以将每次运算的数据集缩小(比如几分钟启动一次),facebook的puma就是基于hadoop做的流计算系统。

无论是哪种产品,随着技术的发展,它们的成功也会过去,不断涌现新的技术产品,但mapreduce和storm的未来如何,只有我们拭目以待!

(更多大数据与商业智能领域干货、或电子书,可添加个人微信号(dashenghuaer))

你可能感兴趣的:(mapreduce和storm两者处理数据的差异!)