Apache storm storm程序的执行流程

Apache storm storm程序的执行流程,apache-storm,Apache Storm,我在暴风雨中是新手,试图了解不同方法的执行流程,从spoot到bolt。 Like Spoot有不同的方法,如 nextTuple() 开() declareOutputFields() 激活() 停用() 博尔特也有类似的方法 准备() 执行() 清理() declareOutputFields() 那么有谁能告诉我这些方法的执行顺序吗?首先,当您的拓扑启动时 创建喷口和螺栓 declareoutput字段 喷嘴/螺栓序列化并分配给工人 第二,在集群上某个位置的每个worker中 喷嘴打开和螺

我在暴风雨中是新手,试图了解不同方法的执行流程,从
spoot
bolt
。 Like Spoot有不同的方法,如

nextTuple()

开()

declareOutputFields()

激活()

停用()

博尔特也有类似的方法

准备()

执行()

清理()

declareOutputFields()


那么有谁能告诉我这些方法的执行顺序吗?

首先,当您的拓扑启动时

  • 创建喷口和螺栓
  • declareoutput字段
  • 喷嘴/螺栓序列化并分配给工人
  • 第二,在集群上某个位置的每个worker中

  • 喷嘴
    打开
    和螺栓
    准备
    (发生一次)
  • 在一个循环中。。。
    • 停止调用
      ack
      fail
      nextTuple
    • 螺栓调用
      execute

  • 如果您的拓扑已停用

    • 将调用您的spouts
      deactivate
      方法。再次激活拓扑时,将调用
      activate
    如果你的拓扑被杀死

    • 喷口可能已调用
      关闭
    • 螺栓可能会调用
      清理
    注:

    没有保证会调用close,因为 supervisor kill-9在集群上的工作进程


    谢谢你的回答。如果您能帮忙,我还有一个问题-当我终止拓扑时,不会调用cleanup方法,因为我在集群模式下运行,所以如果我想在终止拓扑后执行代码,我可以在哪里编写代码?到目前为止,我还没有找到在终止拓扑时执行代码的好方法。我曾想过尝试使用zookeeper添加一个“优雅的关机”机制,但到目前为止还没有时间去做。如果你能找到工作,我会感兴趣的!