有没有办法控制apachestorm中的spout数量?

问题描述 投票:0回答:1

在 Apache Storm 中声明拓扑时,有没有办法控制每台机器使用多少个实例?

TopologyBuilder builder = new TopologyBuilder();

builder.setSpout("myspout", new MyDoSomethingOnTheHost(), 5);  

在示例和 API 文档中,限制似乎只是每个拓扑计数,但对于我想要的情况,我想确保 spouts 在每个主机和每个主机上准确地执行任务。

据我了解,即使在上面示例中的 5 台机器的情况下,似乎也无法控制每台机器启动多少个 spout,并且在最坏的情况下,所有 5 个 spouts 将在一台主机上执行.

apache-storm spout
1个回答
0
投票

据我所知,Apache Storm 本身使用循环放置方案。因此,如果您只有这 5 个 spout 和 5 个主机,它应该可以按需要工作。然而,由于您可能会有更多的螺栓,事情会变得更加复杂,因为不清楚 Storm 内部如何构建用于分配螺栓和喷口的列表。 你可以做的第一件事就是尝试看看它是如何分配运算符的。

此外,如果您确实想确保所需的映射,Storm 提供(与 Flink 相比)通过实现

IScheduler
接口来实现自己的调度程序。在这里您可以构建有关如何分配运算符的自定义逻辑。

© www.soinside.com 2019 - 2024. All rights reserved.