1 回答
TA贡献1804条经验 获得超3个赞
“快”这个词是不明确的,专业属于点有两个层面:
1. 延时 , 指数据从产生到运算产生结果的时间,题主的“快”应该主要指这个。
2. 吞吐, 指系统单位时间处理的数据量。
首先明确一点,在消耗资源相同的情况下,一般来说storm的延时低于mapreduce。但是吞吐也低于mapreduce。 我再补充一下。storm是典型的流计算系统,mapreduce是典型的批处理系统。下面对流计算和批处理系统流程
真个数据处理流程来说大致可以分三个阶段:
1. 数据采集与准备
2. 数据计算(涉及计算中的中间存储), 题主中的“那些方面决定”应该主要是指这个阶段处理方式。
3. 数据结果展现(反馈)
1)数据采集阶段,目前典型的处理处理策略:数据的产生系统一般出自页面打点和解析DB的log,流计算将数据采集中消息队列(比如kafaka,metaQ,timetunle)等。批处理系统一般将数据采集进分布式文件系统(比如HDFS),当然也有使用消息队列的。我们暂且把消息队列和文件系统称为预处理存储。二者在延时和吞吐上没太大区别,接下来从这个预处理存储进入到数据计算阶段有很大的区别,流计算一般在实时的读取消息队列进入流计算系统(storm)的数据进行运算,批处理一系统一般会攒一大批后批量导入到计算系统(hadoop),这里就有了延时的区别。
2)数据计算阶段,流计算系统(storm)的延时低主要有一下几个方面(针对题主的问题)
A: storm 进程是常驻的,有数据就可以进行实时的处理
转载,仅供参考。.
- 1 回答
- 0 关注
- 1181 浏览
添加回答
举报