关于Flume的事务介绍

Flume事务总结

1.概念

1.1 事务的介绍

​ flume中的事务和关系型数据库中的事务是不同的,只是名称一样!

​ Flume中的事务代表的是一批要以原子性写入到channel或要从channel中移除的events!

​ Flume在设计时,采取的是at least once语义!因此在没有故障时,flume只会写入一次数据!

但是,如果遇到sink端的超时或写入文件系统失败等异常,flume可能采用重试机制!直到全部写入成功!

因此可能会产生重复的数据!

​ 如果数据重复怎么办?

​ 如果对数据不敏感,重复无所谓!

​ 如果对数据敏感,要求数据最好有一个唯一的id字段,在具体使用数据时,进行去重!

1.1.1 put事务

​ put事务指source将封装好的event,交给ChannelProcessor,ChannelProcessor在处理这批events时,

先把events放入到putList中,放入完成后,一次性commit(),这批events就可以成功写入到channel!

​ 写入成功后,执行清空putList操作!

​ 如果在过程中,发生任何异常,此时执行rollback(),rollback()会回滚putList,回滚也会直接清空putList!

1.1.2 take事务

​ take事务指sink不断从channel中获取event!,每获取一批event中的一个,都会将这个event放入takeList中!

一般一批evnet全部写入,执行commit()方法,这个方法会清空takeList!如果在此期间,发生了异常,执行rollback(),此时会回滚takeList中的这批event到channel!

1.2 事务的特点

​ 事务的实现由channel提供!source和sink在put和 take数据时,只是先获取channel中已经定义好的事务!

​ 不同的channel的事务可能实现方式是不同的,但是原理和目的是一样的!都是为了put和take一批events的原子性!

1.3 take事务的数据重复情况

当前是sink的运行逻辑(模拟)


                
  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值