在 Storm 中配置并行性
Configuring parallelism in Storm
我是 Apache Storm 的新手,我正在尝试自己弄清楚如何配置风暴并行性。所以有一篇很棒的文章“Understanding the Parallelism of a Storm Topology”,但它只会引起质疑。
当你有一个多节点风暴集群时,每个拓扑根据 TOPOLOGY_WORKERS
配置参数作为一个整体分布。所以如果你有 5 个工人,那么你有 5 个 spout 副本(每个工人 1 个),螺栓也是一样。
如何在风暴集群中处理这种情况(最好不创建外部服务):
- 我只需要一个 spout 供所有拓扑实例使用,例如,如果输入数据通过网络文件夹推送到集群,并扫描新文件。
- 混凝土类型的螺栓存在类似问题。例如,当数据由锁定到具体物理机器的许可第三方库处理时。
首先,基础知识:
- Workers - 运行 个执行者,每个 worker 都有自己的 JVM
- Executors - 运行个任务,每个executor按storm分布在不同的worker
- 任务 - 实例 运行使用您的 spout/bolt 代码
其次,更正...拥有 5 个工人并不意味着您将自动拥有 5 个 spout 副本。拥有 5 个工作人员意味着您有 5 个独立的 JVM,storm 可以在其中将执行程序分配给 运行(将其视为 5 个存储桶)。
您的 spout 实例数是在您首次创建和提交拓扑时配置的:
TopologyBuilder builder = new TopologyBuilder();
builder.setSpout("0-spout", new MySpout(), spoutParallelism).setNumTasks(spoutTasks);
由于整个集群只需要一个 spout,因此可以将 spoutParallelism
和 spoutTasks
都设置为 1。
我是 Apache Storm 的新手,我正在尝试自己弄清楚如何配置风暴并行性。所以有一篇很棒的文章“Understanding the Parallelism of a Storm Topology”,但它只会引起质疑。
当你有一个多节点风暴集群时,每个拓扑根据 TOPOLOGY_WORKERS
配置参数作为一个整体分布。所以如果你有 5 个工人,那么你有 5 个 spout 副本(每个工人 1 个),螺栓也是一样。
如何在风暴集群中处理这种情况(最好不创建外部服务):
- 我只需要一个 spout 供所有拓扑实例使用,例如,如果输入数据通过网络文件夹推送到集群,并扫描新文件。
- 混凝土类型的螺栓存在类似问题。例如,当数据由锁定到具体物理机器的许可第三方库处理时。
首先,基础知识:
- Workers - 运行 个执行者,每个 worker 都有自己的 JVM
- Executors - 运行个任务,每个executor按storm分布在不同的worker
- 任务 - 实例 运行使用您的 spout/bolt 代码
其次,更正...拥有 5 个工人并不意味着您将自动拥有 5 个 spout 副本。拥有 5 个工作人员意味着您有 5 个独立的 JVM,storm 可以在其中将执行程序分配给 运行(将其视为 5 个存储桶)。
您的 spout 实例数是在您首次创建和提交拓扑时配置的:
TopologyBuilder builder = new TopologyBuilder();
builder.setSpout("0-spout", new MySpout(), spoutParallelism).setNumTasks(spoutTasks);
由于整个集群只需要一个 spout,因此可以将 spoutParallelism
和 spoutTasks
都设置为 1。