Apache Storm:将执行器分配给插槽



我正在探索Apache Storm。我知道没有办法确定哪些任务映射到哪个节点。我想知道是否有任何方法可以猜测哪些执行者被分组在一起。例如,考虑具有 1 个喷口和 2 个螺栓的线性链拓扑:

喷口 -> 螺栓1 -> 螺栓2

如果有一个 3 节点集群,并且 numworker = 3,组合并行度 = 9(3 个喷口 + 2 x 3 螺栓(,是否有任何方法可以确定执行程序的分组方式?我已经读到默认调度程序以循环方式均匀分配负载。这是否意味着所有工作线程将分别有一个实例:S -> B1 -> B2 执行器?

对于默认调度程序,你是对的。如果您有 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/

最新更新