在Storm中配置并行性

时间:2015-01-03 14:52:27

标签: parallel-processing apache-storm

我是Apache Storm的新手,我正在尝试自己设置风暴并行性。所以有一篇很棒的文章" Understanding the Parallelism of a Storm Topology",但它只引起了一些问题。

当您拥有多节点风暴群集时,每个拓扑根据TOPOLOGY_WORKERS配置参数作为整体分发。所以如果你有5个工人,那么你有5个喷口副本(每个工人1个),同样的东西是螺栓。

如何在风暴群内处理这样的情况(最好不要创建外部服务):

  1. 我需要一个所有拓扑实例使用的喷口,例如,如果输入数据通过网络文件夹推送到集群,则会扫描新文件。
  2. 与混凝土类型的螺栓类似的问题。例如,当数据由锁定到具体物理机的许可第三方库处理时。

1 个答案:

答案 0 :(得分:2)

首先,基础知识:

  1. Workers - 运行执行程序,每个worker都有自己的JVM
  2. 执行人员 - 运行任务,每个执行人员分布在各种工作人员之间
  3. 任务 - 运行spout / bolt代码的实例
  4. 第二,纠正......有5名工人并不意味着你会自动拥有5份你的喷口。拥有5个工作人员意味着你有5个独立的JVM,其中storm可以分配执行程序来运行(将其视为5个存储桶)。

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

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

    由于整个群集只需要一个喷口,因此您需要将spoutParallelismspoutTasks都设置为1。