分享

storm长时间运行后,spout不读取问题

szcountryboy 发表于 2015-12-23 15:28:53 [显示全部楼层] 回帖奖励 阅读模式 关闭右栏 8 16931
TopologyBuilder topology = new TopologyBuilder();
topology.setSpout("KafkaReader",  new KafkaSpout(spoutConfig) , 6);
topology.setBolt("Data1", new DataAnalytics(), 6).shuffleGrouping("KafkaReader");
topology.setBolt("Data2", new DataStorage(),6).shuffleGrouping("KafkaReader");


Spout 从kafka接受数据,data1,data2进行bolt处理

storm jar aa.jar xx.xxx.main2 刚执行完时,spout,bolt都执行正常

等过一段时间(具体未统计,几个小时中间未操作),kafka-consumer 可以看到消息,但是spout却不从kafka读取数据

手工 storm kill aabb后
再执行storm jar aa.jar xx.xxx.main2

spout又可以从kafka上读取数据了

是什么原因呢? 

已有(8)人评论

跳转到指定楼层
atsky123 发表于 2015-12-23 16:39:08
是不是僵死进程了,还是一直循环这样。看看内存,缓存,空间是否足够
回复

使用道具 举报

szcountryboy 发表于 2015-12-23 17:03:54
内存,缓存都正常。
只要kill 后再 jar  运行,就可以
回复

使用道具 举报

atsky123 发表于 2015-12-23 17:13:38
szcountryboy 发表于 2015-12-23 17:03
内存,缓存都正常。
只要kill 后再 jar  运行,就可以

是每过一段时间就kill??

回复

使用道具 举报

tntzbzc 发表于 2015-12-23 17:16:54
本帖最后由 tntzbzc 于 2015-12-23 17:18 编辑

是不是storm长期运行,但是资源缺未得到释放。
回复

使用道具 举报

szcountryboy 发表于 2015-12-23 20:26:08
本帖最后由 szcountryboy 于 2015-12-23 20:28 编辑

public void prepare(Map stormConf, TopologyContext context, OutputCollector collector) {
        this.collector = collector;
        try{
                Class.forName("oracle.jdbc.driver.OracleDriver");
                String dburl = "jdbc:oracle:thin:@192.168.0.4:1521:test";                                                        
                conn = (Connection) DriverManager.getConnection(dburl, "aa", "123");
        }catch(Exception e){
        }
}


@Override
public void execute(Tuple input) {
try{
        PreparedStatement pst = (PreparedStatement) conn.prepareStatement(sql);
        ...
        pst.execute();
        pst.close();
}catch(Exception e){
}
}

@Override
public void cleanup() {
        super.cleanup();
        System.out.println("cleanup method call ");
        try{
                conn.close();        
        }catch(Exception e){
        }
}

就这样的代码,cleanup里面也释放数据库连接了
spourt用的是storm\external\storm-kafka里面的
spout根本没有自己写的东西,现在就是spout不接受数据,kill后再起来就可以接受数据
回复

使用道具 举报

atsky123 发表于 2015-12-23 21:31:59
szcountryboy 发表于 2015-12-23 17:03
内存,缓存都正常。
只要kill 后再 jar  运行,就可以

能否贴出来,大家看看
回复

使用道具 举报

szcountryboy 发表于 2015-12-23 22:52:21
spout是storm-0.9.6自带的
bolt部分就是上面写oracle部分

补充内容 (2015-12-24 09:53):
用kafka-consumer是可以接受到消息
回复

使用道具 举报

sun1 发表于 2016-10-31 10:43:39
问题解决了吗,我也遇到了相同的问,之前参考
http://www.aboutyun.com/forum.ph ... ertype=1&page=1
中提到的修改buffer,可以推迟了几个小时不卡住,但是最终长时间运行还是卡住无法继续。请问楼主解决了吗?
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

推荐上一条 /2 下一条