要了解storm,首先需要了解以下几个概念
1. 拓扑Topologies
一个实时应用程序的逻辑被打包成一个Storm的拓扑。一个拓扑类似于Hadoop中的MapReduce作业。但是MapReduce作业最终会运行完成,而一个拓扑作业将一直运行。除非显示的将它杀死。一个拓扑是一张图,这张图由管口spouts和门闩bolts,以及连接他们的流stream所组成。
2. 流steams
流是Storm中的核心抽象。一条流是一个没有限制长度的元组序列。这个序列被以一种分布式的方式处理和创建。定义流时需要定义一个schema来确定元组的每个字段。一个元组可以包含integer, long, short, byte, string, double, float, boolean, and byte array。用户也可以通过定义指定的序列器创建自定义类型。
3. 管口spouts
管口是拓扑中的流之源。它从外部读取元组并传入拓扑中。它既可以是可靠的也可以是不可靠的。可靠意味者当传入的数据处理失败的话,它能重新传入。不可靠则不关心是否被成功处理。
4. 门闩bolts
具体的数据处理都是在门栓上完成的:过滤,函数,聚合,连接,写入数据库等。
5. 分流stream groupings
定义如何分发流中的元组到多个门闩任务上。内建了7种方法,用户可以实现自定义方法。