nimbus

来源:互联网 发布:老虎证券 美金 知乎 编辑:程序博客网 时间:2024/06/14 13:31

nimbus是master节点,supervise是worker节点。

在tstorm中,nimbus负责在集群中代码的分发,topology只能提在nimbus上提交将任务分配给其他的机器,同时还会检测整个集群,是一个守护进程。

supervise监听分配给它的节点,根据nimbus的分配去启动或者关闭工作进程。每个工作进程执行topology的一个子集,一个运行中的topology是由许多的运行在好多机器上的工作进程组成。

在storm中,有对流进行一个抽象,流是一个不间断的无边界的连续topology。多个tuple流向bolt,当bolt处理完成后继续向下流到下一个bolt.

storm认为每个流都有一个源头,这个源头抽象为spout(喷头),处理strem中的tuple被称为bolt,bolt可以消费任意数量的流。只要将流方向导向该流。同时也可以把处理后的流发送到其他的bolt.

tuple:一个tuple就是一个map,键值对的形式,但是由于strem在传递流向的时候,指定了其中的id,所以tuple内部的结够也就变成了一个值的列表。list.该list中的每一个value都有name,并且该value是可以任意序列话的类型。拓扑中的每个节点都需要说明它所发射的元组的name,其他bolt只需要进行订阅就可以去接受它所发出的流。

spout:消息源(接收数据的处理着,从db中得到数据然后传到topo,理解为数据的生产者)。

spout中的主要方法nextTuple()不断的发射tuple到topo,storm在检测到一个tuple被整个topo成功的处理掉的时候调用ack(),否则调用fail().

bolt:消息的处理,例如操作数据库,具体的逻辑运算等。bolt的主要方法execute();(死循环),连续处理传进来的tuple,成功处理完每一个tuple后调用outputCOntrollor的ack(),通知storm这个方法被执行完成了,执行失败的时候也可以调用fail()通知storm去从新发送数据。

bolt中的流程:当一个tuple被传进来后,bolt进行处理,然后调用ack方法去通知storm自己已经处理过这个tuple了,storm提供了一个IBaseBolt会自动的执行ack().Bolt使用outputControllor来发射tuple到下一个Bolt.

0 0