我读过很多与Storm有关的网站。 但我仍然无法将拓扑完美地映射到风暴群中。
请帮助我理解这一点。
在风暴群中,有像
这样的术语在拓扑中,有
还可以配置
所以任何人都请将所有这些事情联系起来帮助我。
我想知道,每个喷口/螺栓都是行为执行者,还是任务。 如果给出并行性提示,则实体的计数将增加。 如果num worker设置了,那个算是那个。
所有这些与风暴群集映射的东西。 我已经在一个项目中工作过。所以我知道拓扑结构。
答案 0 :(得分:4)
物理群集设置:
术语节点通常是指群集中的物理计算机(或VM)。在每个节点上,主管正在自己的JVM中运行。主管有工作槽。这是一个逻辑配置,告诉主管可以启动多少工人。每个 worker (如果已启动)都在自己的JVM中运行(因此,有些人称之为工作进程)。 总结:在一个节点上有一个管理程序JVM和最多工作槽工作者JVM。因此,工作者JVM运行的节点可以称为工作节点。当主管一直在运行时,如果需要,则启动工作程序,即,如果部署了拓扑,则在拓扑被终止时停止。在一个worker中,执行者作为线程运行(即每个执行者都映射到一个自己的线程)。
逻辑拓扑设置:
拓扑构建来自 Spouts (也称为源,即没有传入数据流的运营商)和螺栓(常规运营商至少有一个传入数据流和任意数量的传出数据流 - 如果没有传出数据流,则Bolt也称为 sink )。对于每个喷口/螺栓,您可以配置两个参数:
parallelism_hint
),即您想要为Spout / Bolt执行的执行器数 任务是作品的逻辑单元(即被动的东西)。我们假设您使用fieldsGrouping
连接模式。因此,数据流被划分为许多子流的任务数。任务被分配给执行者,即每个执行者处理一个或多个任务。这意味着,你不能拥有比执行者更少的任务(即并行性);否则,会有一个线程没有任何工作要做。
有关详细信息,请参阅Storm文档(https://storm.apache.org/documentation/Understanding-the-parallelism-of-a-Storm-topology.html)。此外,关于Storm中的任务/执行者还有很多其他问题。
最后但并非最不重要的是,您可以为拓扑配置numberOfWorkers
。此参数指示应启动多少工作程序来运行拓扑。拓扑的执行器总数是所有Spout / Bolts上的dops总和。所有执行程序将均匀分布在所有可用的工作JVM上。
此外,单个工作程序只能运行单个拓扑的执行程序。这是出于容错原因而完成的,即拓扑彼此隔离。同时,一个工人本身可以运行任意数量的执行者。