Storm并行度代码调整方式

13 篇文章 0 订阅

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开关分别更改组件的工作程序数或执行程序数。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值