【问题标题】:How to set `setNumTasks` for a storm bolt in clojure?如何在clojure中为风暴螺栓设置`setNumTasks`?
【发布时间】:2016-04-24 17:39:34
【问题描述】:

我想在我的风暴拓扑中为螺栓设置任务数。但是我找不到在clojure中做到这一点的方法。我在螺栓规范中的文档中也没有看到任何内容。我错过了什么吗?为了微调我的应用程序,我需要一种设置任务数量的方法。这可能吗?

[1]:http://storm.apache.org/releases/0.10.0/Clojure-DSL.html

【问题讨论】:

  • 在 Java 中是builder.setBolt(...).setNumTasks(Number)。不确定 Clojure...

标签: clojure apache-storm


【解决方案1】:

相信在调用bolt spec之类的时候可以在一个配置图中传递拓扑任务的数量

(bolt-spec {"1" :shuffle} geocode-lookup :p 8 :conf {TOPOLOGY_TASKS 64})

这是一个示例拓扑:

(defn heatmap-topology []
  (topology
   {"1" (spout-spec checkins :p 4)}

   {"2" (bolt-spec {"1" :shuffle} geocode-lookup :p 8 :conf {TOPOLOGY_TASKS 64})
    "3" (bolt-spec {"2" :shuffle} time-interval-extractor :p 4)
    "4" (bolt-spec {"3" ["time-interval" "city"]} heatmap-builder :p 4)
    "5" (bolt-spec {"4" :shuffle} persistor :conf {TOPOLOGY_TASKS 4})}))

我也很想知道同样的事情,发现了这个:

  1. org.apache.storm.clojure/bolt-specorg.apache.storm.thrift/mk-bolt-spec 的别名 link
  2. bolt-spec 是使用 org.apache.storm.util/defnk link 定义的,因此它返回一个类似于 {:obj bolt :inputs inputs :p parallelism-hint :conf conf} 的映射,其 conf 默认为 nil
  3. org.apache.storm.clojure/bolt-specorg.apache.storm.thrift/mk-topology 的别名,并调用 org.apache.storm.topology.TopologyBuilder.addConfigurations 传递 conf 作为唯一参数。 link
  4. 另外,setNumTasks 简单调用addConfiguration(Config.TOPOLOGY_TASKS, val)link
  5. 最后,设置螺栓喷口的任务数量的正确常数是TOPOLOGY_TASKS link

【讨论】:

  • 完美!我能够将其追溯到第 3 点)。我不知道我只需要通过一张地图!谢谢你。刚试过。有用! :)
【解决方案2】:

根据Clojure-DSL页面:

要创建拓扑配置,最简单的方法是使用 backtype.storm.config 命名空间,它定义了所有 可能的配置。常量与静态常量相同 在 Config 类中,除了用破折号代替下划线。为了 例如,这是一个拓扑配置,将工作人员的数量设置为 15并在调试模式下配置拓扑:

{TOPOLOGY-DEBUG true
 TOPOLOGY-WORKERS 15}

从 Storm 文档中(查找名为“任务数”的部分):

任务数

  • 说明:每个组件要创建多少个任务。
  • 配置选项:TOPOLOGY_TASKS
  • 如何在您的代码中设置(示例):

    ComponentConfigurationDeclarer#setNumTasks()

这里是一个示例代码 sn-p 来显示这些设置在实践中:

topologyBuilder.setBolt("green-bolt", new GreenBolt(), 2)
               .setNumTasks(4)
               .shuffleGrouping("blue-spout");

看起来使用backtype.storm.config命名空间并定义TOPOLOGY-WORKERS将等同于调用setNumTasks

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-14
    • 1970-01-01
    相关资源
    最近更新 更多