Storm 支持任务或数据并行



我正在尝试学习 Storm 提供的并行性和可扩展性功能,并 http://storm.apache.org/documentation/Understanding-the-parallelism-of-a-Storm-topology.html 阅读以下文章。我很困惑 Storm 是否支持数据或任务并行性。我能理解的(我可能是错的)是 Storm 支持任务并行性(因为并行度受拓扑中任务数量的限制)。如果是这种情况,那么它如何用于需要数据并行性的大规模并行数据处理。

任何帮助将不胜感激。谢谢:)

Storm不

遵循教科书术语。事实上,Storm 确实支持数据、任务和流水线并行性。

如果你有一个运算符并分配一个大于一(parallelism_hint)的并行度,你会得到参数指定的尽可能多的线程,每个线程在不同的数据上执行相同的代码,即,你得到数据并行度。您可以进一步分配参数number_of_tasks(必须>= parallelism_hint)以将输入数据拆分为number_of_task分区/子流(即,比执行器更多的分区)。因此,某些执行器线程需要处理多个分区/子流(在 Storm 中称为任务)。这不会增加并行性(可能是并发性)。但是,它允许在运行时更改执行器的数量。

由于拓扑中有多个喷口和螺栓,并且所有这些喷口和螺栓都在不同的线程甚至不同的机器中执行,因此您在这里具有任务并行性不要与 Storm 对术语任务的使用混淆!由于喷口/螺栓之间存在生产/消费者关系,因此您还可以获得管道并行性,这是一种特殊形式的任务并行性。Storm 中任务并行的另一种形式是能够同时运行多个拓扑。

最新更新