对于一堆时刻在增长的数据,如果要统计,可以采取什么方法呢?
- 等数据增长到一定程度的时候,跑一个统计程序进行统计。适用于实时性要求不高的场景。
如将数据导到HDFS,再运行一个MAP REDUCE JOB。
- 如果实时性要求高的,上面的方法就不行了。因此就带来第二种方法。
在数据每次增长一笔的时候,就进行统计JOB,结果放到DB或搜索引擎的INDEX中。
STORM就是完成这种工作的。
HADOOP与STORM比较
- 数据来源:HADOOP是HDFS上某个文件夹下的可能是成TB的数据,STORM是实时新增的某一笔数据
- 处理过程:HADOOP是分MAP阶段到REDUCE阶段,STORM是由用户定义处理流程,
流程中可以包含多个步骤,每个步骤可以是数据源(SPOUT)或处理逻辑(BOLT) - 是否结束:HADOOP最后是要结束的,STORM是没有结束状态,到最后一步时,就停在那,直到有新
数据进入时再从头开始 - 处理速度:HADOOP是以处理HDFS上大量数据为目的,速度慢,STORM是只要处理新增的某一笔数据即可
可以做到很快。 - 适用场景:HADOOP是在要处理一批数据时用的,不讲究时效性,要处理就提交一个JOB,STORM是要处理
某一新增数据时用的,要讲时效性
- 与MQ对比:HADOOP没有对比性,STORM可以看作是有N个步骤,每个步骤处理完就向下一个MQ发送消息,
监听这个MQ的消费者继续处理