Ошибка Storm WordCount: кажется, что конвейер к подпроцессу сломан, вывод не читается

Storm 0.10.0
мой предыдущий вопрос (Apache storm: не удалось загрузить основной класс org.apache.storm.starter.ExclamationTopology) которая была решена.

привет, у меня есть кластер с одним узлом, работающий на моей машине, файл конфигурации storm выглядит следующим образом: (storm.yaml)

storm.zookeeper.servers:
#     - "server1"
#     - "server2"
  - "localhost" 
storm.zookeeper.port: 2181
nimbus.host: "localhost"
storm.local.dir: "/var/stormtmp" 
java.library.path: "/usr/local"
supervisor.slots.ports:
  - 6700
  - 6701
  - 6702
  - 6703
worker.childopts: "-Xmx768m"
nimbus.childopts: "-Xmx512m"
supervisor.childopts: "-Xmx256m"

и я запустил эту топологию WordCount в кластере (нашел топологию здесь и просто запустил ее) https://dl.dropboxusercontent.com/s/kc933u6vz2crqkb/storm-starter-0.0.1-SNAPSHOT-jar-with-dependencies.jar (который это питон)

но на болте выдает следующую ошибку на порту 6703 localhost

java.lang.RuntimeException: backtype.storm.multilang.NoOutputException: кажется, что канал к подпроцессу не работает! Вывод не прочитан. Исключение сериализатора: в backtype.storm.utils.ShellProcess.readShellMs

Итак, я решил, что что-то не так в топологии, поэтому проверил мой WordCount-3-1457017776-worker-6701.log (файл) и нашел это:

b.s.d.executor [INFO] TRANSFERING tuple TASK: 8 TUPLE: source: split:18, stream: default, id: {}, ["moon"]
b.s.d.executor [INFO] BOLT ack TASK: 18 TIME:  TUPLE: source: spout:25, stream: default, id: {}, [the cow jumped over the moon]
b.s.t.ShellBolt [INFO] ShellLog pid:1714, name:split Traceback (most recent call last):
  File "/var/stormtmp/supervisor/stormdist/WordCount-3-1457017776/resources/storm.py", line 172, in run
    self.process(tup)
  File "splitsentence.py", line 5, in process
    words = tup.values[0].split(" ")
IndexError: list index out of range

b.s.t.ShellBolt [ERROR] Halting process: ShellBolt died. Command: [python, splitsentence.py], ProcessInfo pid:1714, name:split exitCode:0, errorString:
java.lang.RuntimeException: backtype.storm.multilang.NoOutputException: Pipe to subprocess seems to be broken! No output read.
Serializer Exception:

        at backtype.storm.utils.ShellProcess.readShellMsg(ShellProcess.java:101) ~[storm-core-0.10.0.jar:0.10.0]
        at backtype.storm.task.ShellBolt$BoltReaderRunnable.run(ShellBolt.java:321) [storm-core-0.10.0.jar:0.10.0]
        at java.lang.Thread.run(Thread.java:745) [?:1.7.0_95]
b.s.d.executor [ERROR]
java.lang.RuntimeException: backtype.storm.multilang.NoOutputException: Pipe to subprocess seems to be broken! No output read.
Serializer Exception:

        at backtype.storm.utils.ShellProcess.readShellMsg(ShellProcess.java:101) ~[storm-core-0.10.0.jar:0.10.0]
        at backtype.storm.task.ShellBolt$BoltReaderRunnable.run(ShellBolt.java:321) [storm-core-0.10.0.jar:0.10.0]
        at java.lang.Thread.run(Thread.java:745) [?:1.7.0_95]

Итак, я считаю, что индекс вне диапазона (возникший из-за строки 5, кортеж становится 0) приводит к тому, что болт умирает, а труба к нему ломается, поэтому я не могу выполнять дальнейшую обработку данных. вопрос правильный? и есть ли решение для этого? или может быть другая топология, на которой я могу протестировать? Пожалуйста, помогите мне, это моя первая топология, работающая на storm.


person hubatrix    schedule 03.03.2016    source источник
comment
Требуется дополнительная информация?   -  person hubatrix    schedule 08.03.2016
comment
откуда вы берете топологию? ваше понимание правильное, хотя я проверил топологию подсчета слов без ошибок в моей системе... возможно, ваш файл jar был изменен. Лучше всего было бы, если бы вы взяли исходный код стартового пакета storm и скомпилировали его самостоятельно, чтобы убедиться, что код делает. Ваша ошибка в основном говорит о том, что кортеж был пуст, и он, должно быть, пришел из восходящего потока в топологии, хотя без исходного кода мы не можем знать, откуда возникла ошибка.   -  person jimijazz    schedule 15.03.2016
comment
вы поняли причину этой проблемы?   -  person user1    schedule 21.01.2017