Storm 使用经验与性能优化(一)

提交任务:storm jar storm-starter-topologies-1.0.1.jar org.apache.storm.starter.WordCountTopology word-count
查询任务:storm list
Kill任务:storm kill word-count

1) 使用rebalance命令动态调整并发度

     Storm提供了rebalance命令,可以动态调整Topology的Worker数量和Component的并发度,而不用修改Topology的代码。如果想动态增加某个Component的并发度,需要设置Component的NumTask数量或者MaxTaskParallelism的参数值,并且大于并发度参数值(parallelism_hint)的值。如果不设置NumTask数量,默认值等同于并发度,重新平衡的时候就只能减少并发度,而不能再增加了。

	SentenceSpout spout=new SentenceSpout();
	SplitSentenceBolt splitbolt=new SplitSentenceBolt();
	WordCountBolt countbolt=new WordCountBolt();
	ReportBolt reportbolt=new ReportBolt();
		
	TopologyBuilder builder=new TopologyBuilder();
	// 设置并发为2个executor,每个Task指派各自的executor线程
	builder.setSpout(SENTENCE_SPOUT_ID,spout,5).setMaxTaskParallelism(10);
	// 设置并发为2个executor,每个executor执行2个task
	builder.setBolt(SPLIT_BOLT_ID,splitbolt,8).shuffleGrouping(SENTENCE_SPOUT_ID).setNumTasks(16);
	// 有时候我们需要将特定数据的tuple路由到特殊的bolt实例中,在此我们使用fieldsGrouping
	// 来保证所有"word"字段值相同的tuple会被路由到同一个WordCountBolt实例中
	builder.setBolt(COUNT_BOLT_ID,countbolt,12).fieldsGrouping(SPLIT_BOLT_ID,new Fields("words"));
	builder.setBolt(REPORT_BOLT_ID,reportbolt).globalGrouping(COUNT_BOLT_ID);
		
	/*Map conf=new HashMap();
	conf.put(Config.TOPOLOGY_WORKERS,4);
	conf.put(Config.TOPOLOGY_DEBUG,true);*/
		
	Config conf = new Config();
	conf.setDebug(true);
	conf.setNumWorkers(3);
	LocalCluster cluster=new LocalCluster();
	cluster.submitTopology(TOPOLOGY_NAME,conf,builder.createTopology());
		
//	Thread.sleep(1000);
//	cluster.shutdown();
		

   在构建Topology的过程中,指定了Spout的初始并发度为5,也就是会启动5个Executor线程来运行,然后设定最大并发度为10,上限为10个Executor线程;同时也指定了Split初始并发度为8,最大的Task数量为16个。在运行过程中,我们发现Spout或者Split的性能是瓶颈,可以通过调整并发度来提供性能。Spout并发度上限为10个,Split的最大并发度为16个。

   storm rebalance word-count -w 10 -n 4 -e spout=8 -e split=12

  Storm通过自己内部的重新部署和分配,来完成并发度的调整。等待10s后,Topology进入重新分配状态,等重新分配完成后,就可以在Storm UI上看见新的结果了。




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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值