重新平衡拓扑引发java.lang.stringindexoutofboundsexception:字符串索引超出范围:-1

abithluo  于 2021-06-24  发布在  Storm
关注(0)|答案(1)|浏览(402)

我用的是文章中提到的泰勒·戈茨的风暴版本
http://ptgoetz.github.io/blog/2013/12/18/running-apache-storm-on-windows/
位于:https://github.com/ptgoetz/incubator-storm/tree/windows-test
我已经成功地在我的计算机上安装了所有东西(运行Windows7,64位)。我也运行良好的指示拓扑和我的拓扑太。但是当我试图通过使用命令重新配置喷口或螺栓的数量来重新平衡拓扑结构时

storm rebalance WordCount -e spout=3

我得到一个例外:

Exception in thread "main" java.lang.StringIndexOutOfBoundsException: String index out   of range: -1
at java.lang.String.substring(String.java:1911)
at backtype.storm.command.rebalance$parse_executor.invoke(rebalance.clj:24)
at clojure.tools.cli$apply_specs.invoke(cli.clj:80)
at clojure.tools.cli$cli.doInvoke(cli.clj:130)
at clojure.lang.RestFn.invoke(RestFn.java:460)
at backtype.storm.command.rebalance$_main.doInvoke(rebalance.clj:31)
at clojure.lang.RestFn.applyTo(RestFn.java:137)
at backtype.storm.command.rebalance.main(Unknown Source)

如果我只改变了工人的数量,它就毫无例外地工作了。
如果你们中有人测试过这个版本,你能帮我把它去掉吗?我期待你的回答。

quhf5bfb

quhf5bfb1#

在提到的windows版本中,不应如中所示传递rebalance命令参数
https://github.com/nathanmarz/storm/wiki/understanding-the-parallelism-of-a-storm-topology

storm rebalance mytopology -n 5 -e blue-spout=3 -e yellow-bolt=10

为了消除提到的异常(java.lang.stringindexoutofboundsexception:),应该使用以下命令

storm rebalance WordCount -e "spout=3"

但是,尝试重新平衡更多组件(喷口或螺栓)只会重新平衡列表中提到的最新组件。例如:

storm rebalance WordCount -e "spout=3" -e "count=5"

重新平衡仅适用于“计数”组件,而不适用于“喷口”。
因此,在我看来,要么更新文档,要么修改rebalance.clj,以便支持多个组件的再平衡。但这是另一个问题。

相关问题