storm分布式计算与问题connection refuse排查。

storm分布式计算与问题connection refuse排查。,第1张

由于项目需要,需要用到storm做分布式计算与数据处理,storm的原理和相关介绍就不在此赘叙了。

项目中storm下发的bolt有2层:

首先编写一个topology:

public class HomeBandToplogy {

private static final String TOPOLOGY_NAME = "HomeBandToplogy"

private static final String KAFKA_SPOUT = "kafkaSpout"

private static final String KAFKA_BOLT = "kafkaBolt"

private static final String ANYNASIS_BOLT = "AnynasisBolt"

private static final Log log = LogFactory.getLog(HomeBandToplogy.class)

}

然后编写一个kafkabolt和一个AnynasisBolt,如下:

kafkabolt:

public class KafkaBolt extends BaseRichBolt {

OutputCollector collector

Log logger

}

AnynasisBolt:

public class AnynasisBolt extends BaseRichBolt {

private OutputCollector collector

Log logger

}

工厂类:

public class BoxFactory {

}

接口类:

public interface BoxService extends Serializable {

}

抽象类:

**

@override

public Boolean executeRedis( return null)

@override

public Boolean executeHbase( return null)

}

storm程序启动以后,小批量数据运行正常。

继续加大数据测试,数据量达到几十万的时候,出现异常,异常如下:

[ERROR] connection attempt 9 to Netty-Client-node5/172.16.1.100:6700 failed: java.net.ConnectException: Connection refused: node5/172.16.1.100:6700

2018-11-16 17:46:11.533 o.a.s.u.StormBoundedExponentialBackoffRetry client-boss-1 [WARN] WILL SLEEP FOR 420ms (MAX)

同时storm程序大量ack失败。

开始以后是线程数过多,以及环境资源紧张导致此种异常。

后来经过重重排查,将接口去掉,将抽象类中的方法变为抽象方法后,程序运行正常。

为何出现这样的异常呢?

原因在于,storm在处理的时候只会处理当前进程下的任务,跨进程的调度是无法实现的,故产生这样的故障。

向集群提交任务: 1)启动Storm Topology: storm jar allmycod.MyTopology arg1 arg2 arg3 其中,allmycode.jar是包含Topology实现代码的jar包,.MyTopology的main方法是Topology的入口,arg1、arg2和arg3为.MyTopology执行时需要传入的参数。 2)停止Storm Topology: storm kill {toponame} 其中,{toponame}为Topology提交到Storm集群时指定的Topology任务名称。


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/yw/11554031.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-17
下一篇2023-05-17

发表评论

登录后才能评论

评论列表(0条)

    保存