1.Worker设置
先丢个官网链接
这里我们以之前的求和为案例,修改main方法内容
public static void main(String[] args) throws InvalidTopologyException, AuthorizationException, AlreadyAliveException {
TopologyBuilder builder = new TopologyBuilder();
builder.setSpout("DataSourceSpout",new DataSourceSpout());
builder.setBolt("SubBolt",new SubBolt()).shuffleGrouping("DataSourceSpout");
String name = LocalSumStormWorkersTop2.class.getSimpleName();
Config config = new Config();
//设置worker数量为2
config.setNumWorkers(2);
//关闭ack进程
config.setNumAckers(0);
//提交作业,参数:
//1.AppName
//2.config
//builder.createTopology() 创建
StormSubmitter.submitTopology(name, config,builder.createTopology());
}
打包运行
./bin/storm jar storm-1.0.jar com.zwb.LocalSumStormWorkersTop2
查看ui界面
注:ack是为了保证数据可以重复发送,一般情况下不能去除
2.executors设置
修改main方法内容
这边只要直接在setSpout和setBolt上设置第三个参数就行了
public static void main(String[] args) throws InvalidTopologyException, AuthorizationException, AlreadyAliveException {
TopologyBuilder builder = new TopologyBuilder();
builder.setSpout("DataSourceSpout",new DataSourceSpout(),2);
builder.setBolt("SubBolt",new SubBolt(),2).shuffleGrouping("DataSourceSpout");
String name = LocalSumStormExecutorsTop2.class.getSimpleName();
Config config = new Config();
config.setNumWorkers(2);
config.setNumAckers(0);
//提交作业,参数:
//1.AppName
//2.config
//builder.createTopology() 创建
StormSubmitter.submitTopology(name, config,builder.createTopology());
}
打包运行,查看ui界面
3.task设置
修改main方法内容
我们只要在setBolt之后添加一个setNumTasks()就行了
public static void main(String[] args) throws InvalidTopologyException, AuthorizationException, AlreadyAliveException {
TopologyBuilder builder = new TopologyBuilder();
builder.setSpout("DataSourceSpout",new DataSourceSpout(),2);
builder.setBolt("SubBolt",new SubBolt(),2)
.setNumTasks(4)
.shuffleGrouping("DataSourceSpout");
String name = LocalSumStormExecutorsTop2.class.getSimpleName();
Config config = new Config();
config.setNumWorkers(2);
config.setNumAckers(0);
//提交作业,参数:
//1.AppName
//2.config
//builder.createTopology() 创建
StormSubmitter.submitTopology(name, config,builder.createTopology());
}
打包运行,查看ui界面
4.rebalance
storm rebalance topology-name [-w wait-time-secs] [-n new-num-workers] [-e component=parall
有时可能希望散布topology工作程序的运行位置。例如,假设有一个10节点集群,每个节点运行4个worker,然后再向集群添加10个节点。可能希望Storm为运行的topology分配工作器,以便每个节点运行2个worker。一种方法是取消拓扑并重新提交,但是Storm提供了“rebalance”命令,该命令提供了一种更简单的方法。
rebalance将首先在消息超时的时间内停用topology(可通过-w标志覆盖),然后在集群中均匀地重新分配工作线程。然后,topology将返回到其先前的激活状态(因此,已停用的topology仍将被停用,并且已激活的topology将返回到已激活状态)。
rebalance命令还可以用于更改正在运行的拓扑的并行性。使用-n和-e开关分别更改组件的工作程序数或执行程序数。