storm的使用笔记

嗯,随时记随时更新。


1. 关于log

用storm jar ...将项目提交给storm集群后,想查看本项目的log信息,要到supervisor机器的:storm安装路径/logs/worker-number.log(其中的number视实际情况而定)中查看。


如果是用daemontools启动的storm,daemontools监控的目录是/service/storm,那么到/service/storm/logs中查看worker-number.log日志。


若要更改log的级别,是debug还是info等,在storm安装路径/log4j下有个配置文件,按需要修改即可。


程序代码中,log相关代码像这样:

public static Logger logger = org.apache.log4j.Logger.getLogger(ReadLogSpout.class);

...

logger.info("");

...


storm的debug模式下,它本身的log非常庞大,所以我觉得自己的代码中有些重要的信息,用info比较好,这样将storm的log级别调整为info比较方便查看。



2. 关于maven打成jar包的依赖们


a. 首先maven的pom文件中的storm依赖,要么加exclude storm的相关语句(github有说明),要么加<scope>,如下:

<dependency>

<groupId>storm</groupId>

<artifactId>storm</artifactId>

<scope>test</scope>

</dependency>

加scope可以使打jar包时,不包含storm。

如果包含了storm,那么提交到storm集群,会运行出错。官方要求打jar包时,要去除storm的依赖。


b. 使用maven插件,在打jar包时,包含依赖。在pom中加入:

<plugin>

<artifactId>maven-assembly-plugin</artifactId>

<configuration>

<descriptorRefs>

<descriptorRef>jar-with-dependencies</descriptorRef>

</descriptorRefs>

<archive>

<manifest>

<mainClass>com.path.to.main.Class</mainClass>

</manifest>

</archive>

</configuration>

</plugin>


打jar包时使用命令:mvn assembly:assembly


c. 依赖的jar冲突问题

如果本地依赖的jar依赖,与storm的lib下的jar有冲突,即都用了一个jar,但是版本不同,那么貌似目前只能改为跟storm保持统一。官方的讨论组是这样说的。。。



3. storm nimbus启动失败
在使用了storm一段时间后,需要重新部署storm的集群,主要是想将storm部署在其它机器上。做了以下错误操作:
1)没有kill 正在运行的topology,kill nimbus和supervisor的storm进程
2) 删除了配置中"storm.local.dir"的文件夹内的内容
3) 启动storm nimbus

报错:
backtype.storm.daemon.nimbus
$fn__2692$exec_fn__945__auto____2693$this__2731@62135133
java.io.FileNotFoundException: File '/opt/apps-install/storm/
storm_local/nimbus/stormdist/appFailed-6-1325065153/stormconf.ser'
does not exist
at
org.apache.commons.io.FileUtils.openInputStream(FileUtils.java:137)
at
org.apache.commons.io.FileUtils.readFileToByteArray(FileUtils.java:
1135)
at backtype.storm.daemon.nimbus
$read_storm_conf.invoke(nimbus.clj:128)
at backtype.storm.daemon.nimbus
$compute_new_task__GT_node_PLUS_port.invoke(nimbus.clj:244)
at backtype.storm.daemon.nimbus
$mk_assignments.invoke(nimbus.clj:288)
at backtype.storm.daemon.nimbus
$fn__2692$exec_fn__945__auto____2693$this__2731.invoke(nimbus.clj:460)
at backtype.storm.event$event_manager
$fn__2068$fn__2069.invoke(event.clj:25)
at backtype.storm.event$event_manager
$fn__2068.invoke(event.clj:22)
at clojure.lang.AFn.run(AFn.java:24)
at java.lang.Thread.run(Thread.java:662)
2011-12-29 16:15:02 util [INFO] Halting process: ("Error when
processing an event")

之所以报这个错误,是因为没有先kill topology,所以在启动nimbus时,zookeeper中依然保留了上次运行着的topology的信息,解决办法是用zookeeper的zkCli.sh清理一下,我直接重装了zookeeper。但是据说在storm 0.6.1中解决了该bug。而我用的是storm 0.6.0




4. storm使用JVM参数
在配置文件storm.yaml中,有:

# to nimbus
nimbus.childopts: "-Xmx1024m"

# to supervisor
supervisor.childopts: "-Xmx1024m"

# to worker
worker.childopts: "-Xmx768m"


如果worker在运行时,需要用指定的JVM参数,那么可以像这样配置:
worker.childopts: "-Dworker=worker -Xmx768m -Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,address=8111,suspend=y,server=y "
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值