我在探索Apache Storm。我知道没有办法确定哪些任务被映射到哪个节点。我想知道是否有任何方法可以猜测哪些执行器组合在一起。例如,考虑一个带有1个喷口和2个螺栓的线性链拓扑:
Spout - >螺栓1 - > Bolt2
如果有一个3节点集群,numworkers = 3,并行并行= 9(3个喷口+ 2 x 3个螺栓),有没有办法确定执行程序的分组方式?我已经读过默认调度程序以循环方式均匀分配负载。这是否意味着所有工人将分别拥有一个实例: S - > B1 - > B2执行人?
答案 0 :(得分:1)
对于默认调度程序,您是对的。如果你有3名工人,每个工人将被分配一个你的Spout,Bolt1和Bolt2的实例。
默认调度程序将执行程序分配给工作程序的顺序是循环,如您所说。更详细地说,在调度程序考虑下一个逻辑运算符之前,为每个逻辑运算符的循环分配发生在其所有执行程序中。但是,逻辑运算符本身的顺序并不固定。有关详细信息,请参阅此处的代码:https://github.com/apache/storm/tree/0.9.x-branch/storm-core/src/clj/backtype/storm/scheduler
如果要影响此行为,可以提供自定义计划程序。请在此处查看示例:https://xumingming.sinaapp.com/885/twitter-storm-how-to-develop-a-pluggable-scheduler/