2014-02-04 1 views
1

Я использую штормовую версию Taylor Гетц указал статьябалансировку топологии броски java.lang.StringIndexOutOfBoundsException: индекс Строки из диапазона: -1

http://ptgoetz.github.io/blog/2013/12/18/running-apache-storm-on-windows/

и расположено по адресу: https://github.com/ptgoetz/incubator-storm/tree/windows-test

Мне удалось установить все на моем компьютере (работает windows 7, 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) 

Если я m меняет только количество рабочих, с которыми оно работает, без каких-либо исключений.

Если кто-то из вас протестировал эту версию, не могли бы вы помочь мне избавиться от нее? Я буду ждать ваших ответов.

+0

Я удалил подпись во время моего редактирования, на случай, если вам интересно - они не используются в StackOverflow. См. [Должны ли «Привет», «спасибо», теги и приветствия удалены из сообщений?] (Http://meta.stackexchange.com/questions/2950/should-hi-thanks-taglines-and-salutations-be- удален-из-сообщений) –

+0

@Cris Спасибо, Крис за форматирование моего кода и комментариев. Проблема заключается в rebalance.clj в функции parse-excutor, где входная строка не подходит. Если я отправляю «-e mybolt = 5», функция получает только «mybolt» вместо «mybolt = 5» – florins

+0

просто интересуется, является ли носик именем компонента ??? – abhi

ответ

0

В упомянутой версии для Windows, аргументы команды ребаланс не должен быть принят, как указано в

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, чтобы поддерживать перебалансировку для нескольких компонентов. Но это другая проблема.

+0

Taylor Goetz добавил вопрос о jira относительно этого: https://issues.apache.org/jira/browse/STORM-214 – florins