天天看點

Storm之——常見問題及解決辦法

轉載請注明出處: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即可通過。

繼續閱讀