一个风暴程序的执行流程

Execution flow of a storm program

我是 storm 的新手,正在尝试了解从 spoutbolt 的不同方法的执行流程。 就像 spout 有不同的方法一样

nextTuple()

open()

declareOutputFields()

activate()

deactivate()

bolt 有类似

的方法

prepare()

execute()

cleanup()

declareOutputFields()

谁能告诉我这些方法的执行顺序?

首先,当您的拓扑启动时...

  1. 创建 Spout 和 Bolt
  2. declareOutputFields
  3. Spouts/Bolts 连载并分配给工人

其次,在集群中某处的每个 worker 中...

  1. Spouts open 和 Bolts prepare(发生一次)
  2. 循环中...
    • Spouts 调用 ackfailnextTuple
    • 螺栓呼叫 execute

如果您的拓扑已停用...

  • 您的 spouts deactivate 方法将被调用。当您再次激活拓扑时,将调用 activate

如果你的拓扑被杀死了...

  • Spouts 可能 close 打电话给
  • 螺栓 可能 调用了 cleanup

注:

There is no guarentee that close will be called, because the supervisor kill -9's worker processes on the cluster. source