6

其他风暴用户:

设置风暴集群的指南(https://github.com/nathanmarz/storm/wiki/Setting-up-a-Storm-cluster)表明 supervisor.slots.ports 配置属性设置为每个工作人员在您分配一个单独的端口的机器上。

我的理解是,每个工作人员都是一个 JVM 实例,它监听来自 nimbus 控制器的命令。所以每个工作人员都在一个单独的端口上监听是有道理的。

但是,在 backtype.storm.Config 上还有一个方法似乎允许定义工作人员的数量。如果对 setNumWorkers 的调用试图设置比您配置的端口更多的工作人员怎么办?那似乎把事情搞砸了。

对我来说唯一有意义的是 yaml 配置定义了工人数量的上限。每个拓扑都可能要求分配一些工人。但是如果我提交了两个拓扑(到某个特定的集群),每个都调用 Config.setNumWorkers(2),那么我最好配置四个端口。

这是正确的想法吗?

提前谢谢.. -克里斯

4

3 回答 3

4

好吧,我认为上限猜测是正确的。我在我的笔记本电脑上设置了一个单机风暴集群,然后我构建了 ExclamationTopology(来自storm-starter)。我只设置了两个工作人员,但 ExclamationTopology 调用了 > conf.setNumWorkers(3);

但是,当我查看storm UI时,它告诉我'Num Workers'是2。

因此,您在storm.yaml 文件中设置的似乎是一个上限,如果您要求的工作人员数量超过您配置的端口数量,那么您只会获得可用的最大值。

(警告:我只是进入这些东西,绝不是专家,所以我有可能错过了一些东西。但上面的报告是我观察到的。)

于 2013-10-27T02:55:34.177 回答
1

你基本上是对的。

插槽和工人之间有一个重要的区别。插槽是可以实现工人的地方。当您设置一个具有 10 个插槽的主管时,您将其设置为在该主管上同时运行多达 10 个工作人员。如果你请求的 worker 多于 slot,Storm 将尽其所能在可用 slot 中安排工作(在某些情况下,这意味着,例如,worker 可能会进入 slot,做一些工作,然后被替换由另一个工作人员,以便拓扑可以继续),在某些方面与操作系统调度进程在它可用的有限数量的“插槽”(处理器/内核/超线程/任何东西)上运行没有什么不同。

于 2013-10-27T06:12:20.643 回答
1

supervisor.slots.ports 是整个风暴集群对工作人员数量的硬性限制。

Config.setNumWorkers(#workers) 是该拓扑对工人数量的软限制。

这意味着 Config.setNumWorkers(#workers) <= supervisor.slots.ports。

假设我们总共有 8 个端口。拓扑将工作人员数量配置为 6。它将得到 8 个工作端口中的 6 个,其余 2 个工作端口将未使用。

于 2015-01-04T16:56:41.410 回答