Storm配置类型
Storm有大量的配置,可以调整Nimbus、Supervisor、拓扑运行的参数,大部分是可以进行调节的,但是也有少部分配置是不能修改的系统配置。每个配置会有一个默认值,该值定义在Storm代码库的defaults.yaml文件中。在Nimbus和Supervisor的类路径中定义一个storm.yaml文件,可以覆盖这些配置值。使用StormSubmitter提交拓扑的时候,可以定义一个指定拓扑的配置,但是只能覆盖前缀为TOPOLOGY的配置项。
Storm0.7.0以后的版本开始允许在Spout/Bolt中覆盖配置,可以修改的配置主要有:
"topology.debug"
"topology.max.spout.pending"
"topology.max.task.parallelism"
"topology.kryo.register"
注:topology.kryo.register与其他的配置有所不同,它的序列化会应用到拓扑上的所有组件。
Storm的Java API也提供了两种方式指定组件的配置:
1.内部的(Internally)配置
在Spout或者Bolt类中,覆盖getComponentConfiguration方法,返回组件配置的Map对象,getComponentConfiguration方法定义如下:
@Override
public Map<String, Object> getComponentConfiguration() {
// TODO Auto-generated method stub
return null;
}
注:我们只要以Map的形式返回我们所要配置的参数即可。
2.外部的(Externally)配置
使用TopologyBuilder类的setSpout方法返回SpoutDeclarer对象,使用setBolt方法返回BoltDeclarer对象。SpoutDeclarer与BoltDeclarer实现了ComponentConfigurationDeclarer接口,该接口有addConfiguration方法和addConfigurations方法,可以通过调用这两个方法来覆盖组件的配置。
SpoutDeclarer接口的定义代码如下:
public interface SpoutDeclarer extends ComponentConfigurationDeclarer{
}
BoltDeclarer接口的定义代码如下:
publ