Storm重啓報java.io.FileNotFoundException錯誤

問題:

storm異常停止後,重啓storm,nimbus進程幾秒後便不見了。 查看日誌報錯:nimbus [ERROR] Error when processing event
java.io.FileNotFoundException: File ‘/data/storm/nimbus/stormdist/risk_topo-1-1574555563/stormconf.ser’ does not exist
at org.apache.commons.io.FileUtils.openInputStream(FileUtils.java:299) ~[analyzer-storm-dependency.jar:na]
at org.apache.commons.io.FileUtils.readFileToByteArray(FileUtils.java:1763) ~[analyzer-storm-dependency.jar:na]
at backtype.storm.daemon.nimbusreadstormconf.invoke(nimbus.clj:89) [stormcore0.9.5.jar:0.9.5]atbacktype.storm.daemon.nimbusread_storm_conf.invoke(nimbus.clj:89) ~[storm-core-0.9.5.jar:0.9.5] at backtype.storm.daemon.nimbuscompute_executors.invoke(nimbus.clj:419) ~[storm-core-0.9.5.jar:0.9.5]
at backtype.storm.daemon.nimbusKaTeX parse error: Expected group after '_' at position 17: …ompute_topology_̲_GT_executorsiter__3324__3328KaTeX parse error: Expected group after '_' at position 3: fn_̲_3329.invoke(ni…seq.invoke(core.clj:133) ~[clojure-1.5.1.jar:na]
at clojure.core.protocolsseqreduce.invoke(protocols.clj:30) [clojure1.5.1.jar:na]atclojure.core.protocolsseq_reduce.invoke(protocols.clj:30) ~[clojure-1.5.1.jar:na] at clojure.core.protocolsfn__6026.invoke(protocols.clj:54) ~[clojure-1.5.1.jar:na]
at clojure.core.protocolsKaTeX parse error: Expected group after '_' at position 3: fn_̲_5979G__5974__5992.invoke(protocols.clj:13) ~[clojure-1.5.1.jar:na]
at clojure.corereduce.invoke(core.clj:6177) [clojure1.5.1.jar:na]atclojure.corereduce.invoke(core.clj:6177) ~[clojure-1.5.1.jar:na] at clojure.coreinto.invoke(core.clj:6229) ~[clojure-1.5.1.jar:na]
at backtype.storm.daemon.nimbusKaTeX parse error: Expected group after '_' at position 17: …ompute_topology_̲_GT_executors.i…compute_new_topology__GT_executor__GT_node_PLUS_port.invoke(nimbus.clj:550) ~[storm-core-0.9.5.jar:0.9.5]
at backtype.storm.daemon.nimbusmkassignments.doInvoke(nimbus.clj:662) [stormcore0.9.5.jar:0.9.5]atclojure.lang.RestFn.invoke(RestFn.java:410) [clojure1.5.1.jar:na]atbacktype.storm.daemon.nimbusmk_assignments.doInvoke(nimbus.clj:662) ~[storm-core-0.9.5.jar:0.9.5] at clojure.lang.RestFn.invoke(RestFn.java:410) ~[clojure-1.5.1.jar:na] at backtype.storm.daemon.nimbusfn__3724KaTeX parse error: Expected group after '_' at position 8: exec_fn_̲_1103__auto____…fn__3730KaTeX parse error: Expected group after '_' at position 3: fn_̲_3731.invoke(ni…fn__3724KaTeX parse error: Expected group after '_' at position 8: exec_fn_̲_1103__auto____…fn__3730.invoke(nimbus.clj:908) ~[storm-core-0.9.5.jar:0.9.5]
at backtype.storm.timerschedulerecurringschedule_recurringthis__1807.invoke(timer.clj:99) ~[storm-core-0.9.5.jar:0.9.5]
at backtype.storm.timermktimermk_timerfn__1790KaTeX parse error: Expected group after '_' at position 3: fn_̲_1791.invoke(ti…mk_timer$fn__1790.invoke(timer.clj:42) ~[storm-core-0.9.5.jar:0.9.5]
at clojure.lang.AFn.run(AFn.java:24) ~[clojure-1.5.1.jar:na]
at java.lang.Thread.run(Thread.java:724) ~[na:1.7.0_25]
2019-11-24T10:43:46.368+0800 b.s.util [ERROR] Halting process: (“Error when processing an event”)
java.lang.RuntimeException: (“Error when processing an event”)

分析:

nimbus重啓後便down掉是因爲zookeeper裏還保留着之前異常掛掉storm的信息,以至於每次重啓storm的時候,zookeeper都會去讀取該topology信息,如果重啓的時候已經將{storm.local.dir}目錄下的文件刪除了,便會報找不到文件了。此時應該將zookeeper的storm也刪除掉,實現同步。

解決方案:

如果不清楚zookeeper安裝在哪裏,則是使用命令查詢
find / -name zkCli.sh
我的zookeeper安裝位置:
/opt/cloudera/parcels/CDH-5.7.1-1.cdh5.7.1.p0.11/lib/zookeeper/bin
則修復步驟:
1、進入目錄:
cd /opt/cloudera/parcels/CDH-5.7.1-1.cdh5.7.1.p0.11/lib/zookeeper/bin
2、輸入 ./zkCli.sh
3、查看服務: ls /
4、刪除storm的服務: rmr /storm
5、重啓storm即可

當然也要記得將配置中{storm.local.dir}的路徑的supervisor,nimbus目錄刪除掉

PS:kill掉storm進程命令
ps -ef | grep storm | grep -v ‘grep’ | awk ‘{print $2}’ | xargs kill -9

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章