您的位置:首页 > 其它

storm-kafka数据流量问题

2015-09-16 01:03 183 查看
目标:每秒18000条数据能够通过storm挖掘处理完

问题:通过kafka完成,每秒只能处理5000条左右

1.通过增加bolt的处理线程数,并未发现UI上的每秒处理的速度变快

2.写文件,决定用直接读取文件的方式:

kafka写了8min,最终写出了1180000条数据,

这说明了一个问题,8min只能产生1180000条数据,如何能在1s处理18000条数据。

3.即使这样,仍然采用直接读文件的方法,而非采用从kafka读取数据

(1)readlog不sleep,1180000条数据30秒内处理完成,然而,查询结果无法输出

(2)readlog每条sleep 1ms,但是readlog并不能在内读到18000条数据,虽然该情况下,查询有输出

4.考虑sleep的时间太长,每10000条数据sleep 10ms,或者5000条数据sleep 10ms,结果还是处理很快,查询没有输出结果

5.既然每秒18000条是通过UI看的,为什么我一定要一秒的数据也是18000条呢(18000条数据的时间标记是一样的),因为1s的数据是Map打包处理的,修改1s 1800条数据,但是这样处理的速度仍然是特别慢的,而且稳定到下图的值的时候,增长很慢。



6.剩下只有一个可能,因为打时间标签花费太长时间,将打标签的工作,由发数据的挪到bolt中。下一个方案就是将打时间戳的工作由发送数据端改到bolt端,但是还是稳定在1s 5000条数据

(1)加大线程数到48,会报空指针的异常,这很可能是因为并发修改的缘故

(2)增加抛弃的数据,每10条抛弃9条,但还是稳定在1s 5000条数据

7.进一步简化发送数据端的逻辑,会出现并发修改的问题,报空指针异常



得出结论

(1)优点:kafka发送数据有限制流量的作用,大量数据来临时,不会崩溃,程序不会不出结果。

(2)缺点:并不能使数据端速度达到每秒18000条甚至更多,换而言之,当大量数据来临时,并不能及时处理完,可能需要更多的时间进行处理。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: