Apache storm Apache Storm中的调度/放置控制

Apache storm Apache Storm中的调度/放置控制,apache-storm,Apache Storm,我正在由2个节点组成的Storm集群中运行wordcount拓扑。一个节点是带有Nimbus、UI和Logviewer的主节点,然后两个节点都是主管,每个节点有一个工作节点。换句话说,我的主节点也是一个主管,而第二个节点只是一个主管。正如我所说,每个主管有一名工人 我使用的拓扑配置为使用这2个worker setNumWorkers 2。具体而言,拓扑结构有1个带2个螺纹的喷嘴、1个对开螺栓和1个计数螺栓。当我使用默认调度程序部署拓扑时,第一个监控程序有1个喷口螺纹和对开螺栓,第二个监控程序有1

我正在由2个节点组成的Storm集群中运行wordcount拓扑。一个节点是带有Nimbus、UI和Logviewer的主节点,然后两个节点都是主管,每个节点有一个工作节点。换句话说,我的主节点也是一个主管,而第二个节点只是一个主管。正如我所说,每个主管有一名工人

我使用的拓扑配置为使用这2个worker setNumWorkers 2。具体而言,拓扑结构有1个带2个螺纹的喷嘴、1个对开螺栓和1个计数螺栓。当我使用默认调度程序部署拓扑时,第一个监控程序有1个喷口螺纹和对开螺栓,第二个监控程序有1个喷口螺纹和计数螺栓

在这种情况下,我如何控制这两名工人之间操作员喷口/螺栓的位置?出于研究目的,我需要控制这些操作符在节点之间的放置。然而,该机制在Storm中似乎是透明的,最终用户无法使用这种控制

我希望我的问题足够清楚。请随时询问更多详细信息。我知道我可能需要深入研究Storm的源代码并重新编译。那很好。我正在寻找一个起点,并就如何继续寻找建议


我使用的Storm版本是2.1.0。

调度由Storm中的可插拔调度程序处理。请参阅上的文档

您可能需要查看DefaultScheduler以供参考。这是Storm使用的默认调度程序,它有一点处理功能,可以禁止坏工人参与分配,但在其他方面,它基本上只执行循环分配

如果不想实现集群范围的调度程序,可以将集群设置为使用,并改用拓扑级别的调度策略。提交拓扑时,您可以通过设置config.setTopologyStrategyYourStrategyHere.class来设置此选项。您将想要实现这个接口,您可以在


编辑:如果您实现了IStrategy或IScheduler,那么它们需要放在一个罐子中,然后放在Nimbus机器上的storm/lib中。策略或调度程序需要位于Nimbus进程的类路径上。

谢谢您的回答。我尝试了以下方法:我在启动包中WordCountTopology旁边有一个MyScheduler类。我的计划程序为空,正在执行LOG.info。在拓扑中,我调用conf.setTopologyStrategyorg.apache.storm.starter.MyScheduler;我可以在执行日志中看到这些信息。但是,我无法从MyScheduler中看到任何日志。暴风雨有可能在晚上卷土重来吗?我应该在哪里查看调度程序的日志?请澄清,您的MyScheduler实现了IStrategy接口,对吗?我希望日志显示在storm Directory中的Nimbus log/logs/Nimbus.log中。不,它实现了isScheduler接口。我从中得到了灵感,这是一个错误。我会改变这一点,并在白天回来更新!谢谢。到目前为止,我所了解的是Storm可以使用不同的调度器,我们不需要实现自己的调度器,而是在ResourceAwareScheduler之上实现一种策略。如果未通过设置storm.scheduler在storm.conf中更改调度程序,则拓扑使用的更改策略似乎不会被考虑在内。现在一切都配置好了,我的MySchedulerStrategy类似乎没有找到:在nimbus.log java.lang.RuntimeException:java.lang.ClassNotFoundException:org.apache.storm.starter.MySchedulerStrategy中。你知道我做错了什么吗?