Exception in thread "main"java.lang.IllegalArgumentException: Nimbus host is notset
atbacktype.storm.utils.NimbusClient.<init>(NimbusClient.java:30)
atbacktype.storm.utils.NimbusClient.getConfiguredClient(NimbusClient.java:17)
atbacktype.storm.StormSubmitter.submitJar(StormSubmitter.java:78)
atbacktype.storm.StormSubmitter.submitJar(StormSubmitter.java:71)
atbacktype.storm.StormSubmitter.submitTopology(StormSubmitter.java:50)
atcom.taobao.kaleidoscope.storm.IcdbTopology.main(IcdbTopology.java:59)
但是启动nimbus是没有问题的, 这个主要因为conf_dir路径设置不正确,在bin/storm脚本中需要加上这样一句:
Python代码
1. CONF_DIR = STORM_DIR + "/conf"
3关于DRPC
3.1发布drpc 类型的topologies 到远程集群时,出现空指针异常,连接drpc服务器失败
原因是未正确配置drpc 服务器地址。
解决方法:在conf/storm.yaml 文件中增加drpc 服务器配置,启动配置文件中
指定的所有drpc 服务。内容如下:
drpc.servers:
- "drpc 服务器ip"
3.2客户端调用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 networkrestart。重启storm,再次调用drpc 服务,成功。Hosts 文件中必须包含如下
内容:
[nimbus 主机ip] [nimbus 主机名] [nimbus 主机别名]
[supervisor 主机ip] [supervisor 主机名] [supervisor 主机别名]
[zookeeper 主机ip] [zookeeper 主机名] [zookeeper 主机别名]
4关于jzmq安装
4.1storm 启动时报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"
4.2安装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
4.3安装jzmq 时遇到cannot access org.zeromq.ZMQ 的make 错误
具体的make 错误信息:
error: cannot access org.zeromq.ZMQ class file fororg.zeromq.ZMQ not found
javadoc: error - Class org.zeromq.ZMQ not found.
解决方法:手动编译,然后重新make 即可通过。
cd src
javac -d . org/zeromq/*.java
cd ..
4.4 在部署storm节点的时候需要安装jzmq和zeromq, 在安装这两个依赖包之后,需要执行sudo -u root ldconfig. 否则会出现异常:
2012-02-24 16:30:30 worker [ERROR] Error oninitialization of server mk-worker
java.lang.UnsatisfiedLinkError: /usr/local/lib/libjzmq.so.0.0.0:libzmq.so.1: cannot open shared object file: No such fileor
directory
at java.lang.ClassLoader$NativeLibrary.load(NativeMethod)
atjava.lang.ClassLoader.loadLibrary0(ClassLoader.java:1803)
atjava.lang.ClassLoader.loadLibrary(ClassLoader.java:1728)
atjava.lang.Runtime.loadLibrary0(Runtime.java:823)
atjava.lang.System.loadLibrary(System.java:1028)
atorg.zeromq.ZMQ.<clinit>(ZMQ.java:34)
5关于Storm的配置问题
1. yaml跟我们一般用的属性配置文件有所不同, 它的要求更严格一些,因此在往conf/storm.yaml中添加配置的时候必须注意,比如必须注意开始位置和冒号后面的空格, 否则配置不会生效。
2. 如何检查配置是否生效?
可以使用命令: storm localconfvalue 配置关键字
但是这个命令只能在nimbus上生效, 在supervisor看到的还是默认值.不知道为什么 。
6关闭storm相关进程
6.1关闭nimbus相关进程:
kill `ps aux | egrep '(daemon\.nimbus)|(storm\.ui\.core)' |fgrep -v egrep | awk '{print $2}'`
备注:这是在网上看到的,没有经过实际测试,有兴趣的朋友可以自己测试一下。
6.2干掉supervisor上的所有storm进程:
kill `ps aux | fgrep storm | fgrep -v 'fgrep' | awk '{print$2}'`
备注:这是在网上看到的,没有经过实际测试,有兴趣的朋友可以自己测试一下。
7关于Topology发布之后的log