作者: 大圓那些事 | 文章可以轉載,請以超連結形式标明文章原始出處和作者資訊
網址: http://www.cnblogs.com/panfeng412/archive/2013/11/30/some-issues-and-solutions-from-building-storm.html
下面是在編譯Storm過程中遇到的一些問題以及解決辦法:
問題1:下載下傳lein 2.3.4,如果使用root使用者,運作lein sub install編譯時報了WARNING資訊。
WARNING: You're currently running as root; probably by accident.
Press control-C to abort or Enter to continue as root.
Set LEIN_ROOT to disable this warning.
解決方法:設定LEIN_ROOT環境變量。
export LEIN_ROOT=1
問題2:運作lein sub install編譯時,報了以下錯誤資訊。
Unrecognized VM option 'TieredStopAtLevel=1'
Could not create the Java virtual machine.
解決方法:原因是使用JDK1.6,不支援TieredStopAtLevel=1,需要安裝JDK1.7版本,并設定JAVA_HOME。
export JAVA_HOME=/usr/java/jdk1.7.0_45/
問題3:報backtype.storm.LocalCluster和backtype.storm.LocalDRPC類找不到:
Compiling backtype.storm.testing4j
Exception in thread "main" java.lang.ClassNotFoundException: backtype.storm.LocalCluster, compiling:(testing4j.clj:1)
at clojure.lang.Compiler$InvokeExpr.eval(Compiler.java:3387)
at clojure.lang.Compiler.compile1(Compiler.java:7035)
at clojure.lang.Compiler.compile1(Compiler.java:7025)
at clojure.lang.Compiler.compile(Compiler.java:7097)
at clojure.lang.RT.compile(RT.java:387)
at clojure.lang.RT.load(RT.java:427)
at clojure.lang.RT.load(RT.java:400)
at clojure.core$load$fn__4890.invoke(core.clj:5415)
at clojure.core$load.doInvoke(core.clj:5414)
解決方法:修改storm-core/src/clj/backtype/storm/testing4j.clj和storm-core/src/clj/storm/trident/testing.clj,分别引用這兩個類:
testing4j.clj:
1 (ns backtype.storm.testing4j
2 (:import [java.util Map List Collection ArrayList])
3 (:require [backtype.storm.LocalCluster :as LocalCluster])
testing.clj:
1 (ns storm.trident.testing
2 (:require [backtype.storm.LocalDRPC :as LocalDRPC])
問題4:運作bash ./bin/install_zmq.sh後檢查zmq和jzmq是否安裝成功,例如如果沒有安裝libtool會導緻autogen.sh運作失敗,進而導緻jzmq編譯安裝失敗。
解決方法:通過yum或apt-get安裝libtool包。
問題5:運作lein sub install報錯提示libzmq.so.1找不到。
at clojure.main.main(main.java:37) ~[clojure-1.4.0.jar:na]
Caused by: java.lang.UnsatisfiedLinkError: /usr/local/lib/libjzmq.so.0.0.0: libzmq.so.1: cannot open shared object file: No such file or directory
解決方法:原因是libzmq.so.1安裝在了/usr/local/lib目錄,而該目錄在動态連結時沒找到。兩種解決辦法:
export LD_LIBRARY_PATH=/usr/local/lib/
或者編輯/etc/ld.so.conf加上一行:/usr/local/lib/,然後使之生效。
sudo ldconfig