昨天搭建好集羣,提交了topology,可是始終沒有結果。今天debug一天終於解決了,記錄下來。java
開始懷疑代碼有問題,在本地模式下調試,確實發現問題,可是解決完問題成功在本地運行後,在集羣上仍是同樣運維
看到不少hs_err_pidXXX.log,在網上查了下是jvm崩潰了,由於對java瞭解不深,覺得是java版本問題(集羣機器上有1.6 1.7 兩個版本)。因而將集羣的機器都改爲 1.6。結果仍是有問題jvm
反覆看各類storm日誌,google, 改代碼,從新跑topology, 重啓集羣,以root身份啓動集羣....... 結果都失敗了ui
回頭找了下介紹hs_err_pidXXX.log,定位了問題(不能肯定) 從文件頭部信息看來,是 libzmq這個庫的問題。運維安裝的是最新穩定版的zeromq 和 jzmq。 在二者兼容性問題上糾結了半天,網上查了不少博客資料,依舊搞不出個因此然。google
無心中看到storm出 0.9 了,想着是否是zeromq和jzmq太新了(剛release幾天), 而用的storm-0.8.1是12年release的,不兼容。抱着換0.9的想法,去找了下0.9的release log 。 結果!臥槽 尼瑪,好大一個坑啊!!!debug
從新編譯了 zeromq-2.1.7, 成功運行topology調試
注: 其實storm/bin裏面有個腳本install_zmq.sh, 使用這個腳本安裝就能夠了。jzmq也使用腳本里的凍結的源碼,使用最新的源碼也會有出現上面說的問題!日誌
storm 文檔好少,實例好少,問題及解決好少,得靠本身多摸索啊orm