1.概述
通过前面的介绍,我们知道Storm可以实现弹性计算,根据需要实时调整Topology的并行度.
参考:
1)翻译:Storm Scalable ——Storm弹性计算
2.问题
经过试验发现, storm rebalance topology-name -n 调整worker数没有问题。
但在调整topology中某个spout或bolt的并行数时,有时候并不能生效。
如 storm rebalance topology-name -e bolt1=3 命令有时候会不生效。
经过进一步分析发现,“-e bolt1=3”, 可以用于减小bolt1的并发度,但并不能增大其并发度。
也就说如果默认bolt1的并发度为5(在创建topology时设定),那么我们可以用“-e bolt1=4”将其并发度减小为4,但并不能使用“-e bolt1=6”将其并发发度调整为6。
“-e bolt1=6”命令的情况是:如果当前bolt1的并发度为5,则什么也做;如果bolt1当前的并发度小于5,将其调整为5。
3.问题分析与解决
起初以为是storm的限制,后来在网上看到的说法是:
You can only increase the parallelism (number of executors) to the number of tasks. So if your component is having for example (number of executors: 50, number of tasks: 50) then you can not increase the parallelism, however you can decrease it.
引用自:http://stackoverflow.com/questions/18716780/storm-v0-8-2-rebalance-command-not-updating-the-number-of-executors-for-a-bolt
就是说spout和bolt的并行数,最多可以调整到它的taskNum,默认情况下,taskNum是和你设置的 paralismNum相同的。
可以通过如下方法设置Bolt或Spout的taskNum。
- builder.setBolt("cpp", new CppBolt(), 3).setNumTasks(5).noneGrouping(pre_name);
本文介绍了Apache Storm中的弹性计算特性,并详细探讨了如何实时调整Topology的并行度。文章揭示了一个常见误区:仅能减少组件的并行度而无法直接增加。通过调整组件的任务数(taskNum),可以实现并行度的有效扩大。
415

被折叠的 条评论
为什么被折叠?



