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