Storm拥有多种配置来调整nimbus,supervisors的行为以及运行topologies。其中有些属于系统配置,我们无法在topology层面上进行更改(就是说有些系统配置我们是不能通过代码来改的),其他的一些配置我们则可以通过在每个topology中调用相应的接口来设置。
每个配置通过defaults.yaml设置默认值。我们可以通过在Nimbus以及supervisors中的classpath定义一个storm.yaml来重写这些配置。最后,我们可以定义对于单个特定topology适用的配置,将该配置通过StormSubmitter与我们的topology一起提交。注意,对于单个特定的topology的配置,我们只能重写前缀是"TOPOLOGY"的配置类(?)
Storm0.7.0及后续版本,将会允许我们在每个bolt/spout上重写配置。只有下列的一些配置可以以这种方式重写:
1."topology.debug"
2."topology.max.spout.pending"
3."topology.max.task.parallelism"
4."topology.kryo.register":这一个可能与其他几个不太一样,因为在topology中所有部分都支持序列化。要了解更多信息请看 Serialization。
Java API让我们有两种方式可以对特定的部分进行特定的配置:
1.内部:在任意spout/bolt中调用getComponentConfiguration方法,将返回该组件(spout或者bolt)特有的配置映射。
2.外部:TopologyBuilder中的setSpout以及setBolt方法会返回一个拥有addConfiguration以及addConfigurations的方法,这两个方法可以用来重写各个组件的配置.
配置的优先级为:defaults.yaml<storm.yaml<特定topology配置(topology specific configuration)<特定内部组件配置(internal component specific configuration)<特定外部组件配置(external component specific configuration)。
相关资源:
·Config:包含所有的配置以及一个辅助类用来创建特定topology配置
·defaults.yaml:所有配置的默认值
·Setting up a Storm cluster:解释如何创建和配置一个Storm集群
·Running topologies on a production cluster: 列出了在集群上运行topologies时有用的配置
·Local mode:列出了在本地模式时,有用的配置