2121SC@SDUSC
Storm-blot(2)
一、 Bolt
bolts是一个Storm集群中的关键组件,它把元组作为输入,然后产生新的元组作为输出。实现一个bolt时,通常需要实现IRichBolt接口。Bolts对象由客户端机器创建,序列化为拓扑,并提交给集群中的主机。然后集群启动工人进程反序列化bolt,调用prepare,最后开始处理元组。
二、拓扑中的blot应用
- 数据流组:
一个数据流组指定了每个bolt会消费哪些数据流,以及如何消费
注:一个节点能够发布一个以上的数据流,一个数据流组允许我们选择接收哪个
数据流组在定义拓扑时设置:
···
builder.setBolt("word-normalizer", new WordNormalizer())
.shuffleGrouping("word-reader");
···
在前面的代码块里,一个bolt由TopologyBuilder对象设定, 然后使用随机数据流组指定数据源。数据流组通常将数据源组件的ID作为参数,取决于数据流组的类型不同还有其它可选参数。
注:每个InputDeclarer可以有一个以上的数据源,而且每个数据源可以分到不同的组。
- 随机数据流组
随机流组是最常用的数据流组。它只有一个参数(数据源组件),并且数据源会向随机选择的bolt发送元组,保证每个消费者收到近似数量的元组
随机数据流组用于数学计算这样的原子操作
- 域数据流组