Storm是流计算框架,相比于SparkStreaming的将流计算按照时间片将InputDstream切分成多段RDD而言,Storm的流计算可以到达毫秒级别。
Storm中有以下主要的概念:
Spouts、Bolt、Stream、Topology、StreamingGrouping、Nimubis、Supervisor
(1)Spouts
Spouts是Storm的数据源,一般会从指定外部的数据源当中读取元组(Tuple),在Storm当中最小的数据单元是Tuple。Spouts将数据以Tuple的形式通过Stream传递给Bolt,Spouts主动调用nextTuple()方法,反复读取元组,以便数据流源源不断。
(2)Bolt
Bolt是数据流处理组件,负责将收到Spouts传递到流数据进行处理,并且将处理生成的数据流以Tuple形式传递给下一个Bolt,Bolt会被动的调用execute()方法,该方法负责处理接收到的Tuple数据流。用户可以在此方法中执行自己的处理逻辑。
(3)Topology
Topology俗称拓扑,是通过流分组将Spouts和多个Bolt组合而成,Topology不像MapReduce那样,MapReduce作业最终会完成计算然后结束运行,但是Topology将持续处理消息,直到认为停止。
(4)Nimbus和Supervisor
Nimbus将Topology分解成多个Task,然后将Task分发给相应的Supervisor,接着将Task和Supervisor相关的信息提交到Zookeeper集群上;接着Supervisor从Zookeeper集群上认领自己的Task,并根据机器分到的任务启动一个或多个Worker进程执行任务。



