flume高并发优化——(14)解决空行停止收集数据问题,及offsets变小问题

本文介绍了在使用Flume进行日志收集过程中遇到的两个主要问题:空行导致的日志收集停止和Kafka中offsets变小引起的数据重复摄入,并提供了相应的解决办法。

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


  日志平台运行一段时间,发现日志有部分丢失,通过检查日志,发现有两个问题导致数据丢失,一个是遇到空行后,日志停止收集,还有就是kafka监控offsets时变小,通过分析代码,找到如下方法:

空行问题:

  在系统稳定运行一段时间之后,发现了一个致命性的bug就是在遇到空行时,无法自动跳过,导致识别为文件结束,再次读取还是空行,跳入了死循环

解决办法:

  解决的办法也非常简单,就是增加对文件大小与当前行数的比较,两者相等则是到达文件末尾,否则继续读取下一行,直到文件末尾

源码:

读取空行逻辑

offsets变小问题:


  我们发现,在大数据量的并发前提下,通过监控kafka,发现数据有重复收入的现象,而且非常严重

解决办法:

  观察一段时间,发现可能是flume-kafka-channel管理offsets的问题,果断进行源码分析,加入相关配置后,情况有所改善, 但是由于offsets是由flume管理,彻底解决这个问题,需要进一步修正代码。

配置:

agent1.channels.c2.migrateZookeeperOffsets=true
agent1.channels.c2.kafka.consumer.session.timeout.ms=100000
agent1.channels.c2.kafka.consumer.request.timeout.ms=110000
agent1.channels.c2.kafka.consumer.fetch.max.wait.ms=1000
agent1.channels.c2.zookeeperConnect=10.1.115.181:2181,10.1.114.221:2181,10.1.114.231:2181/kafka
  • 1
  • 2
  • 3
  • 4
  • 5

总结:

  flume在业界,是一款不错的管道工具,高并发下问题解决也比较迅速,源码结构简单,逻辑清晰,扩展和维护方便推荐各大公司使用。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值