多线程——风暴中只有“针对机器的并行计算”,少了“针对每台机器的并行计算”?

68bkxrlz  于 2021-06-24  发布在  Storm
关注(0)|答案(1)|浏览(365)

我在下面读了一篇关于风暴的帖子。storm parallelism中的“任务”是什么
这个问题和答案对我这个风暴的初学者都很有帮助。不过,我还有一些意见。答案上说,
每个执行器运行多个任务并不能提高并行度-->执行器总是有一个线程用于其所有任务,这意味着tasks>在执行器上串行运行。
这是否意味着storm的“并行计算”集中在“并行机”上。正如miguno提到的,它给了我们扩展集群机器的灵活性。然而,计算机的cpu核集成度越来越高,如果我们对集群中的每台计算机使用并行计算,会更有效吗(在某种程度上,我觉得每台机器中的多核也是一个“集群”)。还有一些非常有用的并行程序库,如akka、disruptor、killim等,使我们可以方便地开发并行程序。
我不确定我是否误解了storm框架(或者这种框架)?
谢谢,

s6fujrry

s6fujrry1#

有点搞不清楚你到底在问什么。正如在同一篇文章中提到的 Worker Process 您可以增加在集群中运行的java进程的数量,以执行任务。
维基上说
config.topology\u workers:设置用于执行拓扑的工作进程数。例如,如果您将其设置为25,那么集群中将有25个java进程执行所有任务。如果拓扑中所有组件的并行度都达到150,那么每个工作进程将有6个任务作为线程在其中运行。
这可以通过做一些

Config conf = new Config();
    conf.setNumWorkers(25);

如果你想增加线程的数量,那么你应该看看 executors ,通过增加相同的值,可以为每个组件生成更多线程。从你提到的同一篇文章中
请注意,从Storm0.8开始,parallelism\u hint参数现在指定了执行器的初始数目(不是任务!)为了那个螺栓。
例如 topologyBuilder.setBolt("green-bolt", new GreenBolt(), 2) 如果我误解了你的意思,请纠正我

相关问题