我想在我的风暴拓扑中设置螺栓的任务数量。但我找不到办法在clojure中做到这一点。我没有在bolt-spec中看到文档中的任何内容。我错过了什么吗?为了微调我的应用程序,我需要一种方法来设置任务数量。这可能吗?
[1]:http://storm.apache.org/releases/0.10.0/Clojure-DSL.html
答案 0 :(得分:1)
我相信在调用bolt规范时可以在配置图中传递拓扑任务的数量,如
(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})}))
我太想知道同样的事了,发现了这个:
org.apache.storm.clojure/bolt-spec
是org.apache.storm.thrift/mk-bolt-spec
link bolt-spec
是使用org.apache.storm.util/defnk
link定义的,因此会返回{:obj bolt :inputs inputs :p parallelism-hint :conf conf}
这样的地图,其中conf默认为nil
org.apache.storm.clojure/bolt-spec
是org.apache.storm.thrift/mk-topology
的别名,并调用org.apache.storm.topology.TopologyBuilder.addConfigurations
作为唯一参数传递conf
。 link setNumTasks
简单来电addConfiguration(Config.TOPOLOGY_TASKS, val)
link TOPOLOGY_TASKS
link 答案 1 :(得分:-1)
根据Clojure-DSL页面:
要创建拓扑配置,最简单的方法是使用
1. Rc8 Rxc8 {[%emt 0:00:01]} 2. Rxc8 {[%emt 0:00:01]} Qxc8 {} 3. Qe7# 1-0
命名空间,它定义了所有的常量 可能的配置。常量与静态常量相同 在Config类中,除了破折号而不是下划线。对于 例如,这是一个拓扑配置,用于设置工作人员数量 15并在调试模式下配置拓扑:backtype.storm.config
从Storm文档(查找名为“任务数”的部分):
任务数量
- 描述:每个组件要创建多少个任务。
- 配置选项:
{TOPOLOGY-DEBUG true TOPOLOGY-WORKERS 15}
如何设置代码(示例):
TOPOLOGY_TASKS
以下是在实践中显示这些设置的示例代码段:
ComponentConfigurationDeclarer#setNumTasks()
看起来使用topologyBuilder.setBolt("green-bolt", new GreenBolt(), 2)
.setNumTasks(4)
.shuffleGrouping("blue-spout");
命名空间,定义backtype.storm.config
等同于调用TOPOLOGY-WORKERS
。