Storm需要知道的几个概念
1.Topologies
通过Stream Groupings 将 Spouts和Bolts连接起来构成一个Topology。一个Topology会一直运行下去,知道你手动将其停止,Storm自动重新分配执行失败的任务
2.Streams
消息流Stream是Storm里的关键抽象。一个消息流其实就是一个没有边界的tuple序列,而这些tuple序列会以一种分布式的方式并行地创建和处理。通过对Stream中tuple的每个字段命名来定义Stream。在默认情况下,tuple的字段类型可以是 integer、long、short、byte、string、double、float、boolean、byte array,同时也可自己定义
3.Spouts
消息源Spout是Storm里面一个Topology中的消息生产者(消息源一般来自 数据库、MQ、文件 ....)
4.Bolts
所有的消息处理逻辑都封装在Bolts里面。Bolts可以做很多事情 eg: 过滤、聚合、查询数据库
5.Stream Groupings
定义一个Topology的其中一步是定义每个Bolt接收什么样的流作为【输入】。Stream Grouping 就是用来定义一个Stream应该如何分配数据给Bolts上面的多个Tasks的
Storm里面有7种类型的SG
Shuffle Grouping:随机分组
Fields Grouping:按字段分组
All Grouping:广播发送
Global Grouping:全局分组
Non Grouping:不分组
Direct Grouping:直接分组
Local or Shuffle Grouping:如果目标Bolt有一个或者多个task在同一个工作进程中,tuple将会被随机发送给这些tasks。否则,和普通的Shuffle Grouping行为一致。
6.Relliability:可靠性
Strom保证每个tuple会被Topology完整执行。Storm会追踪由每个Spout tuple 所产生的tuple树,并跟踪器何时处理成功。另外,每个拓扑都有一个消息超时时间的设置,如果超过这个时间检测到拓扑没有执行成功,那么拓扑会将这个tuple标识为失败,后面会继续重发。
7.Tasks
Spout 和 Bolt都会被当做很多task在整个集群里执行
8.Workers
一个topology可能会在一个或多个worker(工作进程)中执行,每个worker是一个物理JVM并且执行整个拓扑中的一部分
9.Configuration
Storm配置