1、STORM简介 

Storm是Twitter开源的一个类似于Hadoop的实时数据处理框架

Storm能实现高频数据和大规模数据的实时处理

官网资料显示storm的一个节点在1秒钟能够处理100万个100字节的消息(IntelE5645@2.4Ghz的CPU,24GB的内存)

以下是官网的解释:

apache storm 是一个免费,开源分布式实时计算系统。storm使得处理无边界的数据流变得更加容易,但凡hadoop批量处理的过程storm都可以实时处理。storm 非常简单,可被用于任何的编程语言.

apache storm有很多应用场景:实时分析,在线机器学习,持续计算,分布式RPC(类似于dubbo的原理),ETL(抽取(extract)、转换(transform)、加载(load))等等。storm处理速度很快,每个节点每秒可以处理上百万个tuples。storm具有可扩展性,容错,保证您的数据将被处理,易于设置和操作。

storm与你使用的队列和数据库做了集成。 A Storm topology 可以处理流数据,并且可以任意方式去处理,

说明:  产生数据源的节点称为spout,处理tuple的节点陈为bolt。数据传输的基本单位是tuple(可认为是一个ArrayList数组,每个tuple可以传输多个字段)


2、HADOOP与STORM比较

数据来源:HADOOP处理的是HDFS上TB级别的数据(历史数据),STORM是处理的是实时新增的某一笔数据(实时数据);

处理过程:HADOOP是分MAP阶段到REDUCE阶段,STORM是由用户定义处理流程,流程中可以包含多个步骤,每个步骤可以是数据源(SPOUT)或处理逻辑(BOLT)

是否结束:HADOOP最后是要结束的,STORM是没有结束状态,到最后一步时,就停在那,直到有新数据进入时再从头开始;

处理速度:HADOOP是以处理HDFS上大量数据为目的,处理速度慢,STORM是只要处理新增的某一笔数据即可,可以做到很快;
适用场景:HADOOP是在要处理批量数据时用的,不讲究时效性,STORM是要处理某一新增数据时用的,要讲时效性;

注意: 在Hadoop集群上运行MapReduce jobs,在Storm集群上运行topologies。 jobs和topologies有很大的不同。一个关键的区别是,一个MapReduce jobs最终可完成,然后a topology处理过程永远执行(除非kill it)