http://www.blogjava.net/paulwong/archive/2013/09/08/403824.html



对于一堆时刻在增长的数据,如果要统计,可以采取什么方法呢?


等数据增长到一定程度的时候,跑一个统计程序进行统计。适用于实时性要求不高的场景。如将数据导到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的消费者继续处理。