一个风暴程序的执行流程
Execution flow of a storm program
我是 storm 的新手,正在尝试了解从 spout
到 bolt
的不同方法的执行流程。
就像 spout 有不同的方法一样
nextTuple()
open()
declareOutputFields()
activate()
deactivate()
bolt 有类似
的方法
prepare()
execute()
cleanup()
declareOutputFields()
谁能告诉我这些方法的执行顺序?
首先,当您的拓扑启动时...
- 创建 Spout 和 Bolt
declareOutputFields
- Spouts/Bolts 连载并分配给工人
其次,在集群中某处的每个 worker 中...
- Spouts
open
和 Bolts prepare
(发生一次)
- 循环中...
- Spouts 调用
ack
、fail
和 nextTuple
- 螺栓呼叫
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
我是 storm 的新手,正在尝试了解从 spout
到 bolt
的不同方法的执行流程。
就像 spout 有不同的方法一样
nextTuple()
open()
declareOutputFields()
activate()
deactivate()
bolt 有类似
的方法prepare()
execute()
cleanup()
declareOutputFields()
谁能告诉我这些方法的执行顺序?
首先,当您的拓扑启动时...
- 创建 Spout 和 Bolt
declareOutputFields
- Spouts/Bolts 连载并分配给工人
其次,在集群中某处的每个 worker 中...
- Spouts
open
和 Boltsprepare
(发生一次) - 循环中...
- Spouts 调用
ack
、fail
和nextTuple
- 螺栓呼叫
execute
- Spouts 调用
如果您的拓扑已停用...
- 您的 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