storm开发tips

storm和MapReduce框架是类似的,但在生成数据时,往往是增量更新。因为Trident的出现,开发一套实时数据程序非常方便。本人将介绍小米统计storm开发过程中使用的一些优化点。

acker数据设置适中

为了保证数据流被正确的消耗,storm通过acker来跟踪各个数据流,并维持各个数据流的应答。acker设置过小,对任务应答会处理不过来。acker设置过大,会消耗比较多的资源。根据需要可以设置几十个

对应参数:topology.acker.executors

超时时间不要设置过长

设置过长,会导致之前没commit的数据导致该offset之后的数据被重新处理。如果设置时间为6个小时,那么6个小时前一个数据没有被commit,可能导致这6个小时内的数据都被重新消耗一次。

减少shuffle的数据

shuffle过程,会极大的增加网络IO,开发过程中应该尽量减少shuffle的数据量。如果可能,最好在一台节点上处理所有能处理的任务,不要将不必要的数据通过shuffle分发到下一个过程处理。

trident接口的异常处理

用trident写storm程序时,实现继承类的接口时,如果抛出异常,该bolt对应线程会挂掉,并打印出异常信息,对应的消息会被重试,同时重启一个bolt。所以对于已知的异常,一定要处理

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值