Apache风暴 - 使用风暴群集映射拓扑

时间:2015-09-05 08:55:15

标签: apache-storm

我读过很多与Storm有关的网站。 但我仍然无法将拓扑完美地映射到风暴群中。

请帮助我理解这一点。

在风暴群中,有像

这样的术语
  • 工作人员节点
  • 工人处理器
  • 执行器
  • 任务

在拓扑中,有

  • 螺栓

还可以配置

  • numWorkers
  • 并行

所以任何人都请将所有这些事情联系起来帮助我。

我想知道,每个喷口/螺栓都是行为执行者,还是任务。 如果给出并行性提示,则实体的计数将增加。 如果num worker设置了,那个算是那个。

所有这些与风暴群集映射的东西。 我已经在一个项目中工作过。所以我知道拓扑结构。

1 个答案:

答案 0 :(得分:4)

物理群集设置:

术语节点通常是指群集中的物理计算机(或VM)。在每个节点上,主管正在自己的JVM中运行。主管有工作槽。这是一个逻辑配置,告诉主管可以启动多少工人。每个 worker (如果已启动)都在自己的JVM中运行(因此,有些人称之为工作进程)。 总结:在一个节点上有一个管理程序JVM和最多工作槽工作者JVM。因此,工作者JVM运行的节点可以称为工作节点。当主管一直在运行时,如果需要,则启动工作程序,即,如果部署了拓扑,则在拓扑被终止时停止。在一个worker中,执行者作为线程运行(即每个执行者都映射到一个自己的线程)。

逻辑拓扑设置:

拓扑构建来自 Spouts (也称为源,即没有传入数据流的运营商)和螺栓(常规运营商至少有一个传入数据流和任意数量的传出数据流 - 如果没有传出数据流,则Bolt也称为 sink )。对于每个喷口/螺栓,您可以配置两个参数:

  1. 任务数量
  2. dop(并行度,称为parallelism_hint),即您想要为Spout / Bolt执行的执行器数
  3. 任务是作品的逻辑单元(即被动的东西)。我们假设您使用fieldsGrouping连接模式。因此,数据流被划分为许多子流的任务数。任务被分配给执行者,即每个执行者处理一个或多个任务。这意味着,你不能拥有比执行者更少的任务(即并行性);否则,会有一个线程没有任何工作要做。

    有关详细信息,请参阅Storm文档(https://storm.apache.org/documentation/Understanding-the-parallelism-of-a-Storm-topology.html)。此外,关于Storm中的任务/执行者还有很多其他问题。

    最后但并非最不重要的是,您可以为拓扑配置numberOfWorkers。此参数指示应启动多少工作程序来运行拓扑。拓扑的执行器总数是所有Spout / Bolts上的dops总和。所有执行程序将均匀分布在所有可用的工作JVM上。

    此外,单个工作程序只能运行单个拓扑的执行程序。这是出于容错原因而完成的,即拓扑彼此隔离。同时,一个工人本身可以运行任意数量的执行者。