`

最近碰到的一些storm问题总结(不断更新)

阅读更多
目前使用的是storm.0.6.0这个版本. 至于其他版本有没有这问题, 不做研究.

★ yaml跟我们一般用的属性配置文件有所不同, 它的要求更严格一些, 因此在往conf/storm.yaml中添加配置的时候必须注意.

比如必须注意开始位置和冒号后面的空格, 否则配置不会生效. 关于yaml相关的资料, 网上有很多资料可以参考

如何检查配置是否生效, 可以使用命令: storm localconfvalue 配置关键字
但是这个命令只能在nimbus上生效, 在supervisor看到的还是默认值. 不知道为什么

★ 在部署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.<clinit>(ZMQ.java:34)

这里有相关的讨论:
http://groups.google.com/group/storm-user/browse_thread/thread/656fb21d7166574d

★ 关闭nimbus相关进程:
kill `ps aux | egrep '(daemon\.nimbus)|(storm\.ui\.core)' | fgrep -v egrep | awk '{print $2}'`

★ 干掉supervisor上的所有storm进程:
kill `ps aux | fgrep storm | fgrep -v 'fgrep' | awk '{print $2}'`

★ 目前storm貌似不支持动态加载log4j配置文件, 每一个supervisor节点需要修改log4j/storm.log.properties文件来调整日志输出.

★ 在打包toplogy工程的时候, 如果采用assembly方式, 对于相关的依赖的配置一般要这样:
<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, 但是没有给更详细的上下文信息. 
引用
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



★ 有问题直接上storm-user搜索相关帖子或者问Storm的作者Nathan Marz. 此人回答问题非常热心. 从提问人的id来看, 貌似中国人在上面问问题的非常多^_^

★在提交topology的时候有时可能出现如下异常:

引用
Exception in thread "main" java.lang.IllegalArgumentException: Nimbus host is not set
        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这个版本已经解决了, 貌似目前我们这边还没有碰到,  在考虑是否要升级到最新版本?
分享到:
评论
14 楼 ddmonk 2015-02-22  
请问这个worker.childopts(给了一个不合理的jvm参数).配成多大合适.如何配置
13 楼 damy1987 2014-06-10  
请问这个worker.childopts(给了一个不合理的jvm参数).配成多大合适
12 楼 damy1987 2014-06-10  
你好,我也遇到这种问题
2014-06-10 14:47:28 supervisor [INFO] 0e31d92a-76ab-4bf5-a161-ea397e9fdb5a still hasn't started
2014-06-10 14:47:29 supervisor [INFO] 0e31d92a-76ab-4bf5-a161-ea397e9fdb5a still hasn't started
2014-06-10 14:47:29 supervisor [INFO] 0e31d92a-76ab-4bf5-a161-ea397e9fdb5a still hasn't started
2014-06-10 14:47:30 supervisor [INFO] 0e31d92a-76ab-4bf5-a161-ea397e9fdb5a still hasn't started
2014-06-10 14:47:30 supervisor [INFO] 0e31d92a-76ab-4bf5-a161-ea397e9fdb5a still hasn't started
2014-06-10 14:47:31 supervisor [INFO] 0e31d92a-76ab-4bf5-a161-ea397e9fdb5a still hasn't started
2014-06-10 14:47:31 supervisor [INFO] 0e31d92a-76ab-4bf5-a161-ea397e9fdb5a still hasn't started
2014-06-10 14:47:32 supervisor [INFO] 0e31d92a-76ab-4bf5-a161-ea397e9fdb5a still hasn't started
2014-06-10 14:47:32 supervisor [INFO] 0e31d92a-76ab-4bf5-a161-ea397e9fdb5a still hasn't started
2014-06-10 14:47:33 supervisor [INFO] 0e31d92a-76ab-4bf5-a161-ea397e9fdb5a still hasn't started
2014-06-10 14:47:33 supervisor [INFO] 0e31d92a-76ab-4bf5-a161-ea397e9fdb5a still hasn't started
2014-06-10 14:47:34 supervisor [INFO] 0e31d92a-76ab-4bf5-a161-ea397e9fdb5a still hasn't started
2014-06-10 14:47:34 supervisor [INFO] 0e31d92a-76ab-4bf5-a161-ea397e9fdb5a still hasn't started
2014-06-10 14:47:35 supervisor [INFO] 0e31d92a-76ab-4bf5-a161-ea397e9fdb5a still hasn't started
2014-06-10 14:47:36 supervisor [INFO] 0e31d92a-76ab-4bf5-a161-ea397e9fdb5a still hasn't started
2014-06-10 14:47:36 supervisor [INFO] 0e31d92a-76ab-4bf5-a161-ea397e9fdb5a still hasn't started
2014-06-10 14:47:37 supervisor [INFO] 0e31d92a-76ab-4bf5-a161-ea397e9fdb5a still hasn't started
2014-06-10 14:47:37 supervisor [INFO] 0e31d92a-76ab-4bf5-a161-ea397e9fdb5a still hasn't started
11 楼 zsw2zkl 2013-04-30  
ui.childopts -Xmx768m
ui.port 8080
worker.childopts -Xmx768m

        builder.setSpout("data", new TransferDataSpout(), 4);       
        builder.setBolt("transfer", new TransferDataBolt(), 3)
                .shuffleGrouping("data");
        builder.setBolt("write", new WriteDataBolt(), 4)
                .shuffleGrouping("transfer");
               
        Config conf = new Config();
        conf.setDebug(false);
       
        if(args!=null && args.length > 0) {
            conf.setNumWorkers(2);
一共两台虚拟机,请问这样的配置合理么 我的出现了supervisor [INFO] b46ddc47-e88a-4982-9958-ff1fb50abf91 still hasn't started 谢谢
10 楼 macrochen 2012-04-22  
badqiu 写道
... storm内存泄露的坑被我踩到了。

啥场景?
9 楼 badqiu 2012-04-20  
... storm内存泄露的坑被我踩到了。
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
7 楼 macrochen 2012-03-17  
TonyLee0329 写道
macrochen 写道
TonyLee0329 写道
你好,请问怎么解决多个spout线程一起读一个数据源呢,重要的是每个线程间数据不能重复
不知道storm可不可以解决这样的问题

能否将数据源sharding?
然后启动多个spout去对应每一个sharding.

现在数据还没做分区,不知道您有没有具体的办法呢?数据是存在mysql中的


那就引入一个中间件, 比如先将数据取模, 放到多个队列, 然后一个spout对应一个队列进行处理
6 楼 TonyLee0329 2012-03-16  
macrochen 写道
TonyLee0329 写道
你好,请问怎么解决多个spout线程一起读一个数据源呢,重要的是每个线程间数据不能重复
不知道storm可不可以解决这样的问题

能否将数据源sharding?
然后启动多个spout去对应每一个sharding.

现在数据还没做分区,不知道您有没有具体的办法呢?数据是存在mysql中的
5 楼 macrochen 2012-03-15  
TonyLee0329 写道
你好,请问怎么解决多个spout线程一起读一个数据源呢,重要的是每个线程间数据不能重复
不知道storm可不可以解决这样的问题

能否将数据源sharding?
然后启动多个spout去对应每一个sharding.
4 楼 TonyLee0329 2012-03-14  
你好,请问怎么解决多个spout线程一起读一个数据源呢,重要的是每个线程间数据不能重复
不知道storm可不可以解决这样的问题
3 楼 qiuboboy 2012-03-01  
macrochen 写道
qiuboboy 写道
<scope>provided</scope> 可以解决。

因为我在pom.xml中是这样配置的:
		<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做过滤???没有明白你的意思。
2 楼 macrochen 2012-02-28  
qiuboboy 写道
<scope>provided</scope> 可以解决。

因为我在pom.xml中是这样配置的:
		<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来做过滤
1 楼 qiuboboy 2012-02-28  
<scope>provided</scope> 可以解决。

相关推荐

    storm 学习资源总结

    最近学习了storm 对应的知识总结如下 自己学习效果不错 推荐大家使用

    Storm学习总结

    Storm令持续不断的流计算变得容易,弥补了Hadoop批处理所不能满足的实时要求。Storm是一个服务框架,支持热部署,即时上线或下线App。 你可以在Storm之上使用各种编程语言。默认支持Clojure、Java、Ruby和Python。要...

    storm讲义总结

    Storm是一个开源的分布式实时计算系统,可以简单、可靠的处理大量的数据流。 Storm有很多使用场景:如实时分析,在线机器学习,持续计算,分布式RPC,ETL等等。 Storm支持水平扩展,具有高容错性,保证每个消息...

    Storm入门教程 之Storm原理和概念详解

    Storm入门教程 之Storm原理和概念详解,出自Storm流计算从入门到精通之技术篇,Storm入门视频教程用到技术:Storm集群、Zookeeper集群等,涉及项目:网站PV、UV案例实战、其他案例; Storm视频教程亮点: 1、Storm...

    解决丢失Storm.dll的问题

    完美解决丢失storm.dll的问题。解决办法:解压下载的文件到C:\Users\????\AppData\Local\Temp 即可(WIN7下)

    storm-ui:Apache Storm 的用户界面

    主分支: ##包裹包战 mvn clean package -DskipTests=true -Dwarcp ./target/storm-ui.war $TOMCAT_HOME/webapps/包装罐 mvn clean package -DskipTests=truecp ./target/storm-ui-*.jar $STORM_HOME/external/...

    storm入门.pdf

    storm的入门,东西很不错!看完就算是基本入门啦!!还等什么?

    细细品味Storm_Storm简介及安装

    细细品味Storm_Storm简介及安装

    传智播客Storm项目实战课程 Storm的集群搭建实战 Storm项目学习视频教程

    01-storm简介 02-storm部署-1 03-storm部署-2 04-storm部署概念 05-streamgrouping 06-storm组件生命周期 07-storm可靠性1 08-storm可靠性2

    storm安装包

    storm安装包storm安装包storm安装包storm安装包storm安装包storm安装包storm安装包

    Apache Storm(apache-storm-2.3.0.tar.gz)

    Apache Storm(apache-storm-2.3.0.tar.gz) 是一个免费的开源分布式实时计算系统。Apache Storm 可以轻松可靠地处理无限制的数据流,实时处理就像 Hadoop 进行批处理一样。Apache Storm 很简单,可以与任何编程语言...

    Storm实时数据处理

    Storm实时数据处理

    大数据-Storm实时数据处理

     《大数据技术丛书:Storm实时数据处理》通过丰富的实例,系统讲解Storm的基础知识和实时数据处理的最佳实践方法,内容涵盖Storm本地开发环境搭建、日志流数据处理、Trident、分布式远程过程调用、Topology在不同...

    Apache Storm(apache-storm-2.3.0-src.tar.gz 源码)

    Apache Storm(apache-storm-2.3.0-src.tar.gz 源码) 是一个免费的开源分布式实时计算系统。Apache Storm 可以轻松可靠地处理无限制的数据流,实时处理就像 Hadoop 进行批处理一样。Apache Storm 很简单,可以与...

    Storm实战:构建大数据实时计算

    随着大数据实时处理需求的强劲增长,Storm的出现填补了大数据处理生态系统的缺失,并被越来越多的公司所采用。阿里巴巴集团数据平台...第10章总结了几个在大数据场景应用过程中遇到的经典问题,以及详细的排查过程。

    《Storm实时数据处理》PDF.zip

    《storm实时数据处理》通过丰富的实例,系统讲解Storm的基础知识和实时数据处理的最佳实践方法,内容涵盖Storm本地开发环境搭建、日志流数据处理、Trident、分布式远程过程调用、Topology在不同编程语言中的实现方法...

    Storm实战构建大数据实时计算

    Storm官方网站有段简介 Storm是一个免费并开源的分布式实时计算系统。利用Storm可以很容易做到可靠地处理无限的数据流,像Hadoop批量处理大数据一样,Storm可以实时处理数据。Storm简单,可以使用任何编程语言。

    storm.学习资料和代码

    获取到文件名称 : apache-storm-0.9.2-incubating.tar.gz 获取到文件名称 : Learning Storm [eBook].pdf 获取到文件名称 : Storm Blueprints.Patterns.pdf 获取到文件名称 : storm01.rar 获取到文件名称 : storm...

    Storm 实战:构建大数据实时计算完整版

    《Storm实战:构建大数据实时计算 》是一本系统并且具有实践指导意义的Storm工具书和参考书,对Storm整个技术体系进行了全面的讲解,不仅包括对基本概念、特性的介绍,也涵盖了一些原理说明。 实战性很强,各章节都...

Global site tag (gtag.js) - Google Analytics