Как интегрировать болт Python в топологию, созданную с помощью Storm Crawler SDK

Я пытался интегрировать болт, созданный на python, в топологию, созданную с использованием компонентов Storm-Crawler_SDK-1.7 и Apache-Storm-1.1.0. Выполнение топологии не может найти исполняемую программу python и ищет ее в совершенно другом временном месте. Я постоянно получаю эту ошибку, когда пытаюсь выполнить топологию:

27238 [Thread-20-classify-executor[2 2]] ERROR o.a.s.util - Async loop died!
java.lang.RuntimeException: Error when launching multilang subprocess

    at org.apache.storm.utils.ShellProcess.launch(ShellProcess.java:94) ~[storm-core-1.1.1.jar:1.1.1]
    at org.apache.storm.task.ShellBolt.prepare(ShellBolt.java:150) ~[storm-core-1.1.1.jar:1.1.1]
    at org.apache.storm.daemon.executor$fn__5030$fn__5043.invoke(executor.clj:793) ~[storm-core-1.1.1.jar:1.1.1]
    at org.apache.storm.util$async_loop$fn__557.invoke(util.clj:482) [storm-core-1.1.1.jar:1.1.1]
    at clojure.lang.AFn.run(AFn.java:22) [clojure-1.7.0.jar:?]
    at java.lang.Thread.run(Unknown Source) [?:1.8.0_171]
Caused by: java.io.IOException: Cannot run program "python" (in directory "C:\Users\akumar\AppData\Local\Temp\24ed7755-e7c0-42d4-a17f-939082feb1a8\supervisor\stormdist\crawler-1-1528614625\resources"): CreateProcess error=267, The directory name is inval*id
    at java.lang.ProcessBuilder.start(Unknown Source) ~[?:1.8.0_171]
    at org.apache.storm.utils.ShellProcess.launch(ShellProcess.java:87) ~[storm-core-1.1.1.jar:1.1.1]
    ... 5 more
Caused by: java.io.IOException: CreateProcess error=267, The directory name is invalid
    at java.lang.ProcessImpl.create(Native Method) ~[?:1.8.0_171]
    at java.lang.ProcessImpl.<init>(Unknown Source) ~[?:1.8.0_171]
    at java.lang.ProcessImpl.start(Unknown Source) ~[?:1.8.0_171]
    at java.lang.ProcessBuilder.start(Unknown Source) ~[?:1.8.0_171]
    at org.apache.storm.utils.ShellProcess.launch(ShellProcess.java:87) ~[storm-core-1.1.1.jar:1.1.1]
    ... 5 more
27246 [Thread-20-classify-executor[2 2]] ERROR o.a.s.d.executor - 
java.lang.RuntimeException: Error when launching multilang subprocess

    at org.apache.storm.utils.ShellProcess.launch(ShellProcess.java:94) ~[storm-core-1.1.1.jar:1.1.1]
    at org.apache.storm.task.ShellBolt.prepare(ShellBolt.java:150) ~[storm-core-1.1.1.jar:1.1.1]
    at org.apache.storm.daemon.executor$fn__5030$fn__5043.invoke(executor.clj:793) ~[storm-core-1.1.1.jar:1.1.1]
    at org.apache.storm.util$async_loop$fn__557.invoke(util.clj:482) [storm-core-1.1.1.jar:1.1.1]
    at clojure.lang.AFn.run(AFn.java:22) [clojure-1.7.0.jar:?]
    at java.lang.Thread.run(Unknown Source) [?:1.8.0_171]
Caused by: java.io.IOException: Cannot run program "python" (in directory "C:\Users\akumar\AppData\Local\Temp\24ed7755-e7c0-42d4-a17f-939082feb1a8\supervisor\stormdist\crawler-1-1528614625\resources"): CreateProcess error=267, The directory name is invalid
    at java.lang.ProcessBuilder.start(Unknown Source) ~[?:1.8.0_171]
    at org.apache.storm.utils.ShellProcess.launch(ShellProcess.java:87) ~[storm-core-1.1.1.jar:1.1.1]
    ... 5 more
Caused by: java.io.IOException: CreateProcess error=267, The directory name is invalid
    at java.lang.ProcessImpl.create(Native Method) ~[?:1.8.0_171]
    at java.lang.ProcessImpl.<init>(Unknown Source) ~[?:1.8.0_171]
    at java.lang.ProcessImpl.start(Unknown Source) ~[?:1.8.0_171]
    at java.lang.ProcessBuilder.start(Unknown Source) ~[?:1.8.0_171]
    at org.apache.storm.utils.ShellProcess.launch(ShellProcess.java:87) ~[storm-core-1.1.1.jar:1.1.1]
    ... 5 more
27624 [Thread-30-sitemap-executor[9 9]] INFO  c.d.s.f.URLFilters - Loaded instance of class com.digitalpebble.stormcrawler.filtering.regex.RegexURLFilter
27626 [Thread-30-sitemap-executor[9 9]] INFO  o.a.s.d.executor - Prepared bolt sitemap:(9)
27627 [Thread-40-fetch-executor[4 4]] INFO  c.d.s.f.URLFilters - Loaded instance of class com.digitalpebble.stormcrawler.filtering.regex.RegexURLFilter
27628 [Thread-40-fetch-executor[4 4]] INFO  c.d.s.b.FetcherBolt - [Fetcher #-1] : starting at 2018-06-10 12:40:37
27638 [Thread-24-feed-executor[3 3]] INFO  c.d.s.f.URLFilters - Loaded instance of class com.digitalpebble.stormcrawler.filtering.regex.RegexURLFilter
27639 [Thread-24-feed-executor[3 3]] INFO  o.a.s.d.executor - Prepared bolt feed:(3)
27661 [Thread-20-classify-executor[2 2]] ERROR o.a.s.util - Halting process: ("Worker died")
java.lang.RuntimeException: ("Worker died")
    at org.apache.storm.util$exit_process_BANG_.doInvoke(util.clj:341) [storm-core-1.1.1.jar:1.1.1]
    at clojure.lang.RestFn.invoke(RestFn.java:423) [clojure-1.7.0.jar:?]
    at org.apache.storm.daemon.worker$fn__5628$fn__5629.invoke(worker.clj:759) [storm-core-1.1.1.jar:1.1.1]
    at org.apache.storm.daemon.executor$mk_executor_data$fn__4848$fn__4849.invoke(executor.clj:276) [storm-core-1.1.1.jar:1.1.1]
    at org.apache.storm.util$async_loop$fn__557.invoke(util.clj:494) [storm-core-1.1.1.jar:1.1.1]
    at clojure.lang.AFn.run(AFn.java:22) [clojure-1.7.0.jar:?]
    at java.lang.Thread.run(Unknown Source) [?:1.8.0_171]

Топология работает нормально, когда болт Python не включен в топологию.

Болт python также работает должным образом, когда я не использую компоненты SDK Storm Crawler в топологии.

Кто-нибудь может помочь?


person Abhishek Kumar    schedule 10.06.2018    source источник
comment
Вы использовали стандартную топологию SC (без Python) и топологию с Python в удаленном режиме? Или в локальном режиме?   -  person Julien Nioche    schedule 10.06.2018
comment
Я запускал оба в локальном режиме   -  person Abhishek Kumar    schedule 10.06.2018


Ответы (1)


Проблема решена, когда я изменил конфигурацию Maven pom.xml на параметр зависимости apache-storm-core.

Тег был установлен на предоставлен. Я изменил его на компиляцию, и это устранило проблему с запуском в локальном режиме.

person Abhishek Kumar    schedule 12.06.2018
comment
Я до сих пор не совсем понимаю разницу между этими параметрами конфигурации. Если кто-то может указать мне на полное руководство по управлению проектами для maven. Это было бы полезно. - person Abhishek Kumar; 12.06.2018