我想并行化Apache Storm中的窗口操作,换句话说就是分布式窗口操作。当我们在单个节点中运行窗口以及将其操作分布式地分布在多个节点中时,我需要比较性能。任何帮助表示赞赏。
答案 0 :(得分:0)
您不能在多个工作人员之间共享窗口。
如果对拥有多个并发窗口感到满意,则可以增加运行窗口螺栓的执行程序的数量。您可以通过将parallellism_hint
的{{1}}参数设置为非1的数字来完成此操作。如果您的窗口是基于计数的,这可能很好,但是如果是基于时间的,您将同时获得多个窗口间隔(每个螺栓一个)。
如果您想并行化在窗口上完成的工作,则可以使用带窗口的螺栓来创建窗口,但是不执行其他任何工作,然后让创建的窗口在进行实际工作的螺栓之间分配。 / p>
例如
setBolt
然后您的窗口螺栓执行将类似于
setBolt("window", new YourWindowedBolt().withWindow(...))
.shuffleGrouping("your-spout");
setBolt("work", new YourProcessWindowBolt(), 5)
.setTasks(5)
.shuffleGrouping("window");