千家信息网

storm问题总结

发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,storm问题总结(持续更新)1. yaml跟我们一般用的属性配置文件有所不同, 它的要求更严格一些, 因此在往conf/storm.yaml中添加配置的时候必须注意.比如必须注意开始位置和冒号后面的
千家信息网最后更新 2026年11月01日storm问题总结

storm问题总结(持续更新)
1. yaml跟我们一般用的属性配置文件有所不同, 它的要求更严格一些, 因此在往conf/storm.yaml中添加配置的时候必须注意.
比如必须注意开始位置和冒号后面的空格, 否则配置不会生效. 关于yaml相关的资料, 网上有很多资料可以参考
如何检查配置是否生效, 可以使用命令: storm localconfvalue 配置关键字
但是这个命令只能在nimbus上生效, 在supervisor看到的还是默认值. 不知道为什么
2. 在部署storm节点的时候需要安装jzmq和0qm, 在安装这两个依赖包之后, 需要执行sudo -u root ldconfig. 否则会出现异常:
2012-02-24 16:30:30 worker [ERROR] Error on initialization 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 file or directory
at java.lang.ClassLoader$NativeLibrary.load(Native Method)
at java.lang.ClassLoader.loadLibrary0(ClassLoader.java:1803)
at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1728)
at java.lang.Runtime.loadLibrary0(Runtime.java:823)
at java.lang.System.loadLibrary(System.java:1028)
at org.zeromq.ZMQ.(ZMQ.java:34)
这里有相关的讨论:
http://groups.google.com/group/storm-user/browse_thread/thread/656fb21d7166574d
3. 关闭nimbus相关进程:
kill `ps aux | egrep '(daemon\.nimbus)|(storm\.ui\.core)' | fgrep -v egrep | awk '{print $2}'`
4. 干掉supervisor上的所有storm进程:
kill `ps aux | fgrep storm | fgrep -v 'fgrep' | awk '{print $2}'`
5. 目前storm貌似不支持动态加载log4j配置文件, 每一个supervisor节点需要修改log4j/storm.log.properties文件来调整日志输出.
发布topologies时,出现不能序列化log4j.Logger的异常
原因是日志系统无法正确支付序列化。
解决方法:使用slf4j代替log4j。
6. 在打包toplogy工程的时候, 如果采用assembly方式, 对于相关的依赖的配置一般要这样:


/
true

storm:storm



wiki上说可以用compile. 然后将storm依赖设置为runtime, 貌似不行. 另外就是所有的依赖包将全部解压, 然后将所有依赖的配置和class文件生成一个文件. 这个是通过true参数来控制的.
7. 有时候supervisor的conf/storm.yaml参数设置不合理, 会导致worker无法起来的现象,
比如我碰到的一个例子是. 定义了worker.childopts(给了一个不合理的jvm参数). 结果导致worker反复启动, 而均不成功, 这里的日志信息也不明确, 只是说无法start, 但是没有给更详细的上下文信息.
backtype.storm.daemon.worker mytoplogy-12-1330051497 fdd0effd
-0611-427a-8e23-84fe25047dbd 6701 d7f8354d-9ec0-4272-aa0d-9260f7b0042f
2012-02-24 14:24:27 supervisor [INFO]
a17ff23e-00b2-4e51-9001-74664413d2dd still hasn't started
2012-02-24 14:24:28 supervisor [INFO]
a17ff23e-00b2-4e51-9001-74664413d2dd still hasn't started
2012-02-24 14:24:28 supervisor [INFO]
a17ff23e-00b2-4e51-9001-74664413d2dd still hasn't started
2012-02-24 14:24:29 supervisor [INFO]
a17ff23e-00b2-4e51-9001-74664413d2dd still hasn't started
8. 有问题直接上storm-user搜索相关帖子或者问Storm的作者Nathan Marz. 此人回答问题非常热心. 从提问人的id来看, 貌似中国人在上面问问题的非常多^_^
9. 发布topologies到远程集群时,出现Nimbus host is not set异常
原因是Nimbus没有被正确启动起来,可能是storm.yaml文件没有配置,或者配置有问题。
解决方法:打开storm.yaml文件正确配置:nimbus.host: "xxx.xxx.xxx.xxx",重启nimbus后台程序即可。
在提交topology的时候有时可能出现如下异常:
Exception in thread "main" java.lang.IllegalArgumentException: Nimbus host is not set
at backtype.storm.utils.NimbusClient.(NimbusClient.java:30)
at backtype.storm.utils.NimbusClient.getConfiguredClient(NimbusClient.java:17)
at backtype.storm.StormSubmitter.submitJar(StormSubmitter.java:78)
at backtype.storm.StormSubmitter.submitJar(StormSubmitter.java:71)
at backtype.storm.StormSubmitter.submitTopology(StormSubmitter.java:50)
at com.taobao.kaleidoscope.storm.IcdbTopology.main(IcdbTopology.java:59)
但是启动nimbus是没有问题的, 这个主要以为内conf_dir路径设置不正确, 在bin/storm脚本中需要加上这样一句:
CONF_DIR = STORM_DIR + "/conf"
10. 如何知道一个tuple的来源?
A:tuple.getSourceStramId()
11. 看到淘宝技术沙龙上@爱的马斯特提到storm 0.6.x版本有内存泄露的坑, 而0.7.0这个版本已经解决了, 貌似目前我们这边还没有碰到, 在考虑是否要升级到最新版本?
12. 发布topologies到远程集群时,出现AlreadyAliveException(msg: xxx is already active)异常
原因是提供的topology与已经在运行的topology重名。
解决方法:发布时换一个拓扑名称即可
13. 发布drpc类型的topologies到远程集群时,出现空指针异常,连接drpc服务器失败
原因是未正确配置drpc服务器地址。
解决方法:在conf/storm.yaml文件中增加drpc服务器配置,启动配置文件中指定的所有drpc服务。内容如下:
drpc.servers:
- "drpc服务器ip"
13. 客户端调用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主机别名]
14. bolt在处理消息时,worker的日志中出现Failing message
原因可能是因为Topology的消息处理超时所致。
解决方法:提交Topology时设置适当的消息超时时间,比默认消息超时时间(30秒)更长。
conf.setMessageTimeoutSecs(60);
15. 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"
16. 安装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
17. 安装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 ..

配置 文件 主机 方法 服务 错误 原因 日志 问题 信息 时候 服务器 消息 别名 参数 版本 路径 集群 不合理 成功 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 精品咖啡豆 互联网科技产业 北京互联网科技 易互联网科技有限公司 互联网金融 科技创新 一五八零互联网科技 多迪互联网科技有限公司 滨湖区互联网智能科技产品供应 互联网系的金融科技公司 黑科技闪耀互联网之光 深圳市优智互联网科技有限公司 宇信科技在杭州互联网排第几 半导体是互联网高科技吗 广州燕处互联网科技有限公司 济南小医互联网科技有限公司招聘 中国科技和美国互联网 互联网科技和医药行业 北京品多多互联网科技有限公司 上海互联网科技园景观 宁波允成互联网科技有限公司 瑰夏咖啡 山东特亿宝互联网科技有限公司 互联网科技公司起名 互联网科技行业发展 与互联网科技公司 互联网媒体平台算高科技产业 洛阳昕诺飞互联网科技有限公司 互联网科技扶贫时间 无锡工业互联网科技有限公司 城市宝互联网科技有限公司
0