轉載請注明出處:http://blog.csdn.net/l1028386804/article/details/78336187
在做Storm程式設計時,通常會遇到一些問題,那麼,這裡就給大家介紹幾種常見的問題和對應的解決辦法,供大家在日常學習和工作中參考。
1. 釋出topologies到遠端叢集時,出現Nimbus host is not set異常
原因是Nimbus沒有被正确啟動起來,可能是storm.yaml檔案沒有配置,或者配置有問題。
解決方法:打開storm.yaml檔案正确配置:nimbus.host: "xxx.xxx.xxx.xxx",重新開機nimbus背景程式即可。
2. 釋出topologies到遠端叢集時,出現AlreadyAliveException(msg: xxx is already active)異常
原因是提供的topology與已經在運作的topology重名。
解決方法:釋出時換一個拓撲名稱即可。
3. 啟動Supervisor時,出現java.lang.UnsatisfiedLinkError: /usr/local/lib/libjzmq.so.0.0.0: libzmq.so.1: cannot open shared object file: No such file or directory異常
原因是未找到zmq動态連結庫。
解決方法1:export LD_LIBRARY_PATH=/usr/local/lib
解決方法2:編輯/etc/ld.so.conf檔案,增加一行:/usr/local/lib。再執行sudo ldconfig指令,重新開機Supervisor。
4. 釋出drpc類型的topologies到遠端叢集時,出現空指針異常,連接配接drpc伺服器失敗
原因是未正确配置drpc伺服器位址。
解決方法:在conf/storm.yaml檔案中增加drpc伺服器配置,啟動配置檔案中指定的所有drpc服務。内容如下:
5. 用戶端調用drpc服務時,worker的日志中出現Failing message,而bolt都未收到資料
錯誤日志如下所示:
解決方法:主機名,域名,hosts檔案配置不正确會引起這類錯誤。檢查并修改storm相關機器的主機名,域名,hosts檔案。重新開機網絡服務:service network restart。重新開機storm,再次調用drpc服務,成功。Hosts檔案中必須包含如下内容:
6. 釋出topologies時,出現不能序列化log4j.Logger的異常
原因是日志系統無法正确支付序列化。
解決方法:使用slf4j代替log4j。
7. bolt在處理消息時,worker的日志中出現Failing message
原因可能是因為Topology的消息處理逾時所緻。
解決方法:送出Topology時設定适當的消息逾時時間,比預設消息逾時時間(30秒)更長。
conf.setMessageTimeoutSecs(60);
8. storm啟動時報no jzmq in java.library.path錯誤
原因是找不到jzmq,預設情況下在執行install_zmq.sh時,那些.so檔案安裝路徑在/usr/local/lib,但是實際安裝時可能裝在其他的路徑下了。
解決方法:在storm.yaml中添加:
9. 安裝jzmq時遇到No rule to make target `classdist_noinst.stamp'的make錯誤
具體的make錯誤資訊:
解決方法:手動建立classdist_noinst.stamp空檔案。
10. 安裝jzmq時遇到cannot access org.zeromq.ZMQ的make錯誤
解決方法:手動編譯,然後重新make即可通過。