storm学习(三):storm0.9.0版本试用

介绍了Storm 0.9.0版本的主要更新,包括新增Netty数据传输方式、LogviewerUI、Windows版本及日志组件改进等内容,并分享了在实际应用过程中遇到的问题及其解决方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

不知不觉中,storm版本来到了0.9.0版本

这个版本中storm增加了很多新的实用的特性,其中几个比较重要的改变如下:

1.使用两种数据传输方式分别是zeroMQ/0MQ和netty

   之前的版本只能使用0MQ一种传输方式,不过0MQ有一些不尽人意的地方。因为0MQ由C开发所以依赖与平台,安装也比较麻烦。而jvm调用native库也不能进行控制。

    0mq的版本差异比较大,不能保证所有的版本和storm都能兼容。目前的验证可以运行的版本只有2.1.7

    而使用netty比较方便不用安装由于nettty是java开发兼容性可以得到保证。另外netty的性能可以达到0mq的两倍。所以非常推荐使用netty这种方式。

    在storm.yaml中加入

storm.messaging.transport: "backtype.storm.messaging.netty.Context"
storm.messaging.netty.server_worker_threads: 1
storm.messaging.netty.client_worker_threads: 1
storm.messaging.netty.buffer_size: 5242880
storm.messaging.netty.max_retries: 100
storm.messaging.netty.max_wait_ms: 1000
storm.messaging.netty.min_wait_ms: 100

另外也提供可以用户自定义的传输方式,只要实现 backtype.storm.messaging.IContext 接口即可


2.增加Log viewer UI 

   这个版本增加了一个log viewer的守护进程,可以通过ui 直接查看worker的执行日志。 查看日志非常方便。


3. 增加window 版本

4. log的组件修改为slf4j+logback


下载后切换到netty模式,直接就可以使用确实方便许多。不过在使用的过程中还是发现了一些问题。


问题1.使用时storm0.9.0.1发现日志报错

java.lang.IllegalArgumentException: timeout value is negative
        at java.lang.Thread.sleep(Native Method)
        at backtype.storm.messaging.netty.Client.reconnect(Client.java:78)
        at backtype.storm.messaging.netty.StormClientHandler.exceptionCaught(StormClientHandler.java:108)
        at org.jboss.netty.handler.codec.frame.FrameDecoder.exceptionCaught(FrameDecoder.java:377)
        at org.jboss.netty.channel.Channels.fireExceptionCaught(Channels.java:525)
        at org.jboss.netty.channel.socket.nio.NioClientSocketPipelineSink.connect(NioClientSocketPipelineSink.java:124)
        at org.jboss.netty.channel.socket.nio.NioClientSocketPipelineSink.eventSunk(NioClientSocketPipelineSink.java:69)
        at org.jboss.netty.handler.codec.oneone.OneToOneEncoder.handleDownstream(OneToOneEncoder.java:54)
        at org.jboss.netty.channel.Channels.connect(Channels.java:634)
        at org.jboss.netty.channel.AbstractChannel.connect(AbstractChannel.java:207)
        at org.jboss.netty.bootstrap.ClientBootstrap.connect(ClientBootstrap.java:229)
        at org.jboss.netty.bootstrap.ClientBootstrap.connect(ClientBootstrap.java:182)
        at backtype.storm.messaging.netty.Client.reconnect(Client.java:80)
        at backtype.storm.messaging.netty.StormClientHandler.exceptionCaught(StormClientHandler.java:108)
        at org.jboss.netty.handler.codec.frame.FrameDecoder.exceptionCaught(FrameDecoder.java:377)
        at org.jboss.netty.channel.Channels.fireExceptionCaught(Channels.java:525)
        at org.jboss.netty.channel.socket.nio.NioClientSocketPipelineSink.connect(NioClientSocketPipelineSink.java:124)
        at org.jboss.netty.channel.socket.nio.NioClientSocketPipelineSink.eventSunk(NioClientSocketPipelineSink.java:69)
        at org.jboss.netty.handler.codec.oneone.OneToOneEncoder.handleDownstream(OneToOneEncoder.java:54)
        at org.jboss.netty.channel.Channels.connect(Channels.java:634)
其中查找资料可能是之前的一个bug重现了。 我决定降一个版本0.9.0-rc3来代替。因为rc3版本的changelog中明确说明已经解决了该问题


问题2:降版本之后发现报错情况出现connection failed 

2014-02-17 15:45:41 b.s.m.n.StormClientHandler [INFO] Connection failed:

java.nio.channels.UnresolvedAddressException: null 

怀疑可能是地址有问题,最后发现使用netty链接并没有链接服务器的ip而是使用域名。原因在/etc/sysconfig/network中配置了服务器的名称。

而在/etc/hosts中没有将服务器名称对应到ip的配置,所以程序链接不上。最后在/etc/hosts中增加了对应配合后。 重新运行程序。一切正常。问题解决





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

wp500

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值