Parallel processing 在Storm中配置并行性

Parallel processing 在Storm中配置并行性,parallel-processing,apache-storm,Parallel Processing,Apache Storm,我是ApacheStorm新手,我正在尝试为自己弄清楚如何配置Storm并行性。所以有一篇很棒的文章“,但它只会引起问题 当您拥有多节点storm群集时,每个拓扑将根据拓扑\u WORKERS配置参数作为一个整体分布。因此,如果你有5个工人,那么你有5份喷口(每个工人1份),螺栓也是一样 如何在风暴群内部处理此类情况(最好不创建外部服务): 我需要所有拓扑实例都使用一个喷口,例如,如果输入数据通过一个网络文件夹推送到集群,该文件夹将被扫描以查找新文件 混凝土类型的螺栓也存在类似问题。例如,当数据

我是ApacheStorm新手,我正在尝试为自己弄清楚如何配置Storm并行性。所以有一篇很棒的文章“,但它只会引起问题

当您拥有多节点storm群集时,每个拓扑将根据
拓扑\u WORKERS
配置参数作为一个整体分布。因此,如果你有5个工人,那么你有5份喷口(每个工人1份),螺栓也是一样

如何在风暴群内部处理此类情况(最好不创建外部服务):

  • 我需要所有拓扑实例都使用一个喷口,例如,如果输入数据通过一个网络文件夹推送到集群,该文件夹将被扫描以查找新文件
  • 混凝土类型的螺栓也存在类似问题。例如,当数据由锁定在具体物理机器上的许可第三方库处理时
  • 首先,基础:

  • Workers—运行执行器,每个worker都有自己的JVM
  • 执行者-运行任务,每个执行者通过storm分布在不同的工作人员中
  • 任务-运行喷口/螺栓代码的实例
  • 第二,更正。。。拥有5名员工并不意味着你将自动拥有5份你的喷口。拥有5个worker意味着您有5个独立的JVM,storm可以在其中分配执行器来运行(将其视为5个bucket)

    首次创建和提交拓扑时,将配置喷口的实例数:

    TopologyBuilder builder = new TopologyBuilder();
    builder.setSpout("0-spout", new MySpout(), spoutParallelism).setNumTasks(spoutTasks);
    

    因为整个集群只需要一个喷口,所以您需要将
    spoutParallelism
    spoutTasks
    都设置为1。

    不,您错了,实例(任务)的数量是集群的。不是每个工人。5个工人并不意味着5份喷口。如果你想制作5份喷口副本,你必须为该喷口制作5名执行人。每个辅助进程运行拓扑的某些部分。如果您有5个辅助线程,这意味着有5个辅助线程可用于运行N个螺栓执行器+N个喷嘴执行器。谢谢!关于第二个问题。我可以说storm是“只在这台机器上启动这样的螺栓”吗?不,storm会自动确定哪些工人在哪台机器上运行。@Redwan有关在特定机器上运行特定螺栓的信息,请查看