智慧出行-数据回放的断点续传解决方案

1.问题背景

  • 通常我们使用flume和kafka集成,都是使用flume监控文件,会在配置source时的命令,例如:tail -F 文件名,这种方式依然会存在一个问题,当flume的agent进程由于各种原因挂掉一段时间之后,就会产生断点,无法续上之前传输的内容,只能从新开始.

2.解决方案:

(1)低版本flume

第一种方案,是在使用tail -F命令的地方修改(默认读取文件末尾的10行数据)

a1.sources.r2.command=
tail  -n +$(tail -n1 /root/log) -F /root/data/nginx.log | awk 'ARGIND==1{i=$0;next}{i++;if($0~/^tail/){i=0};print $0;print i >> "/root/log";fflush("")}' /root/log

/root/data/nginx.log行号
/root/log记录每次读取的行号

(2)高版本flume使用tailDir Souce

flume1.6版本以后官方修改了断点续传的bug

  • 解决原理就如同spark的检查点,设置taildir_position.json记录消费位置的文件,当agent宕机从启后首先读取taildir_position.json文件,这样子就可以接续上宕机前的数据采集.
a1.sources.s1.type = TAILDIR
a1.sources.s1.positionFile = /home/dev/flume/flume-1.8.0/log/taildir_position.json
a1.sources.s1.filegroups = f1
a1.sources.s1.filegroups.f1 = /home/dev/log/moercredit/logstash.log
a1.sources.s1.headers.f1.headerKey1 = aaa
a1.sources.s1.fileHeader = true
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值