Storm過程中遇到的一些常見問題及解決方法

以下是對個人在使用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服務。內容如下:

drpc.servers:

  - "drpc服務器ip"

5. 客戶端調用drpc服務時,worker的日誌中出現Failing message,而bolt都未收到數據

錯誤日誌如下所示:

2011-12-02 09:59:16 task [INFO] Failing message backtype.storm.drpc.DRPCSpout$DRPCMessageId@3770bdf7: source: 1:27, stream: 1, id: {-5919451531315711689=-5919451531315711689}, [foo.com/blog/1, {"port":3772,"id":"5","host":"10.0.0.24"}]

解決方法:主機名,域名,hosts文件配置不正確會引起這類錯誤。檢查並修改storm相關機器的主機名,域名,hosts文件。重啓網絡服務:service network restart。重啓storm,再次調用drpc服務,成功。Hosts文件中必須包含如下內容:

[nimbus主機ip] [nimbus主機名] [nimbus主機別名]

[supervisor主機ip] [supervisor主機名] [supervisor主機別名]

[zookeeper主機ip] [zookeeper主機名] [zookeeper主機別名]

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中添加:

java.library.path: "/opt/storm/jzmq/lib:/opt/storm/zeromq/lib:/usr/local/lib:/opt/local/lib:/usr/lib"

9. 安裝jzmq時遇到No rule to make target `classdist_noinst.stamp'的make錯誤

具體的make錯誤信息:

make[1]: *** No rule to make target `classdist_noinst.stamp',
needed by `org/zeromq/ZMQ.class'. Stop.

解決方法:手動創建classdist_noinst.stamp空文件。

touch src/classdist_noinst.stamp

10. 安裝jzmq時遇到cannot access org.zeromq.ZMQ的make錯誤

具體的make錯誤信息:

error: cannot access org.zeromq.ZMQ
class file for org.zeromq.ZMQ not found
javadoc: error - Class org.zeromq.ZMQ not found.

解決方法:手動編譯,然後重新make即可通過。

cd src
javac -d . org/zeromq/*.java
cd ..

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