Apache storm -映射拓扑与风暴集群



我看了很多关于Storm的网站。但我仍然不能完美地将拓扑映射到风暴集群中。

请帮我理解一下。

在风暴集群中有像

这样的术语
  • 主管
  • <
  • 工人节点/gh><
  • 工人处理器/gh>工人
  • <
  • 槽/gh>
  • 实施

在拓扑中,有

  • 螺栓

也可以配置

  • numWorkers
  • 并行

有谁能把这些事情联系起来帮助我吗

我想知道,每个喷嘴/螺栓是执行器还是任务。如果给出并行性提示,则该实体的计数将增加。如果设置了num个工人,那么哪一个是该计数的。

所有这些都与风暴集群相关联。我已经参与了一个项目。所以我知道拓扑

物理集群设置:

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

逻辑拓扑设置:

拓扑由Spouts(也称为源,即没有传入数据流的操作符)和Bolts(具有至少一个传入数据流和任意数量的传出数据流的常规操作符—如果没有传出数据流,则Bolt也称为sink)构建。对于每个Spout/Bolt,您可以配置两个参数:

  1. 任务数
  2. dop (并行度,称为parallelism_hint),即您希望为Spout/Bolt拥有的执行器数量

任务是工作的逻辑单元(即被动的东西)。假设您使用fieldsGrouping连接模式。因此,数据流被划分为任务数量多的子流。任务分配给执行程序,即每个执行程序处理一个或多个任务。这意味着,你不能有比执行器更少的任务(即并行);否则,将会有一个线程没有任何工作可做。

查看Storm文档了解更多细节(https://storm.apache.org/documentation/Understanding-the-parallelism-of-a-Storm-topology.html)。此外,还有很多关于Storm中task/executor的问题。

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

此外,单个工作者只能运行单个拓扑的执行器。这样做是出于容错的原因,即拓扑是相互隔离的。同时,一个worker本身可以运行任意数量的executor。

最新更新