【问题标题】:Amount of executors in StormStorm 中的执行者数量
【发布时间】:2014-03-10 10:20:43
【问题描述】:

我在玩 Storm。这是我正在使用的拓扑:

builder.setSpout("word", new RandomSentenceSpout(), 3);
builder.setBolt("exclaim1", new ExclamationBolt(), 6).shuffleGrouping("word");

我认为 Storm 会为这个拓扑生成 9 个执行器(3 个 spout + 6 个 bolt),但是当我实际运行它时,我可以看到 11 个执行器正在运行。

那两个额外的执行者是什么?

【问题讨论】:

  • 您能否更具体地说明您是如何计算执行人的?
  • executor = 并行提示 .. (3+6 = 9) .. 假设他使用的是 0.8 分布

标签: java apache-storm


【解决方案1】:

它们是负责管理确认机制的acker bolts。 您的拓扑中有 2 个 acker,默认情况下,每个 bolt 任务等于一个 executor。

storm使用acker作为一个bolt任务(executor),如果我们不设置acker的数量,它会在topology中运行一些acker。如果您想准确管理执行者的数量,请使用以下内容:

Config conf = new Config();
conf.setNumAckers(1);

【讨论】:

  • 您可以使用“显示系统统计信息”按钮从风暴 UI 中查看 acker 的数量。在我发现这一事实之前,列出的执行者数量与执行者总数不相加这一事实开始让我发疯。
【解决方案2】:

您是否在拓扑中的其他位置设置了 numTasks?分享拓扑创建代码应该有助于回答。另外,你是在本地还是集群模式下运行它? Executors 总是小于或等于 NumTasks。 http://www.michael-noll.com/blog/2012/10/16/understanding-the-parallelism-of-a-storm-topology/这个博客很好的解释了storm中的并行性。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-04
    相关资源
    最近更新 更多