最近碰到的一些storm问题总结(不断更新)目前使用的是storm.0.6.0这个版本. 至于其他版本有没有这问题, 不
最近碰到的一些storm问题总结(不断更新)
目前使用的是storm.0.6.0这个版本. 至于其他版本有没有这问题, 不做研究.
★ yaml跟我们一般用的属性配置文件有所不同, 它的要求更严格一些, 因此在往conf/storm.yaml中添加配置的时候必须注意.
比如必须注意开始位置和冒号后面的空格, 否则配置不会生效. 关于yaml相关的资料, 网上有很多资料可以参考
如何检查配置是否生效, 可以使用命令: storm localconfvalue 配置关键字
但是这个命令只能在nimbus上生效, 在supervisor看到的还是默认值. 不知道为什么
★ 在部署storm节点的时候需要安装jzmq和0qm, 在安装这两个依赖包之后, 需要执行sudo -u root ldconfig. 否则会出现异常:
<dependencySets><dependencySet><outputDirectory>/</outputDirectory><unpack>true</unpack><excludes><exclude>storm:storm</exclude></excludes></dependencySet></dependencySets>
wiki上说可以用<scope>compile</scope>. 然后将storm依赖设置为runtime, 貌似不行. 另外就是所有的依赖包将全部解压, 然后将所有依赖的配置和class文件生成一个文件. 这个是通过<unpack>true</unpack>参数来控制的.
★ 有时候supervisor的conf/storm.yaml参数设置不合理, 会导致worker无法起来的现象, 比如我碰到的一个例子是. 定义了worker.childopts(给了一个不合理的jvm参数). 结果导致worker反复启动, 而均不成功, 这里的日志信息也不明确, 只是说无法start, 但是没有给更详细的上下文信息.
at backtype.storm.utils.NimbusClient.<init>(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"
★Q:如何知道一个tuple的来源?
A:tuple.getSourceStramId()
Update:
刚看到淘宝技术沙龙上@爱的马斯特提到storm 0.6.x版本有内存泄露的坑, 而0.7.0这个版本已经解决了, 貌似目前我们这边还没有碰到, 在考虑是否要升级到最新版本?<dependency><groupId>storm</groupId><artifactId>storm</artifactId><version>0.6.2</version><!-- keep storm out of the jar-with-dependencies --><scope>provided</scope></dependency>
所以我使用了compile来做过滤<dependency><groupId>storm</groupId><artifactId>storm</artifactId><version>0.6.2</version><!-- keep storm out of the jar-with-dependencies --><scope>provided</scope></dependency>
所以我使用了compile来做过滤
compile做过滤???没有明白你的意思。 4 楼 TonyLee0329 2012-03-14 你好,请问怎么解决多个spout线程一起读一个数据源呢,重要的是每个线程间数据不能重复
不知道storm可不可以解决这样的问题 5 楼 macrochen 2012-03-15 TonyLee0329 写道你好,请问怎么解决多个spout线程一起读一个数据源呢,重要的是每个线程间数据不能重复
不知道storm可不可以解决这样的问题
能否将数据源sharding?
然后启动多个spout去对应每一个sharding.
6 楼 TonyLee0329 2012-03-16 macrochen 写道TonyLee0329 写道你好,请问怎么解决多个spout线程一起读一个数据源呢,重要的是每个线程间数据不能重复
不知道storm可不可以解决这样的问题
能否将数据源sharding?
然后启动多个spout去对应每一个sharding.
现在数据还没做分区,不知道您有没有具体的办法呢?数据是存在mysql中的 7 楼 macrochen 2012-03-17 TonyLee0329 写道macrochen 写道TonyLee0329 写道你好,请问怎么解决多个spout线程一起读一个数据源呢,重要的是每个线程间数据不能重复
不知道storm可不可以解决这样的问题
能否将数据源sharding?
然后启动多个spout去对应每一个sharding.
现在数据还没做分区,不知道您有没有具体的办法呢?数据是存在mysql中的
那就引入一个中间件, 比如先将数据取模, 放到多个队列, 然后一个spout对应一个队列进行处理 8 楼 badqiu 2012-04-15 想问你下一下。
storm worker进程timeout重启怎么办? 异常:
2012-04-15 22:02:05 supervisor [INFO] Shutting down and clearing state for id bffa83a9-c289-4bbb-a768-d3d3a6ac72e1. State: :timed-out, Heartbeat: #:backtype.storm.daemon.common.WorkerHeartbeat{:time-secs 1334498404, :storm-id "action_log-6-1334307292", :task-ids (3 35 19), :port 6701}
2012-04-15 22:02:05 supervisor [INFO] Shutting down 19553f3b-94f1-4892-aca0-c573677138b4:bffa83a9-c289-4bbb-a768-d3d3a6ac72e1
2012-04-15 22:02:05 supervisor [INFO] Shut down 19553f3b-94f1-4892-aca0-c573677138b4:bffa83a9-c289-4bbb-a768-d3d3a6ac72e1
2012-04-15 22:02:05 supervisor [INFO] Launching worker with assignment #:backtype.storm.daemon.supervisor.LocalAssignment{:storm-id "action_log-6-1334307292", :task-ids (3 35 19)} for this supervisor 19553f3b-94f1-4892-aca0-c573677138b4 on port 6701 with id d074bcb3-d5af-4887-9651-5fd0eae8ec01
这里有讲到解决办法,还没有尝试:
http://groups.google.com/group/storm-user/browse_thread/thread/37ca589d04877652/753ded4eaa4b9fab?lnk=gst&q=Shutting+down+and+clearing+state++for+id#753ded4eaa4b9fab 9 楼 badqiu 2012-04-20 ... storm内存泄露的坑被我踩到了。 10 楼 macrochen 2012-04-22 badqiu 写道... storm内存泄露的坑被我踩到了。
啥场景?