Flume事务理解

听完别人根据源码讲解的Flume事务,大概有了

初步理解:

在这里插入图片描述

1:putList

1.1 Source读取外界数据,放到putList里面,然后doCommit 提交给Channel
1.2 如果Channel拉取数据异常,将开启doRollback回滚,此时数据就会回到putList,但是putList会把这部分数据清空,所以此时可能会丢失数据,因为如果用netcat Source ,它不会记录位置信息,也就是它读取外界数据时读到哪了,它不知道,你只会继续往下进行;但是如果使用taildir Source ,他会记录之前所有数据的位置信息,当putList清空一些数据时,他会找到该数据的位置信息,重新读取;

2.takeList

2.1 Sink去拉取Channel里的数据,然后doComit提交给HDFS或者其他地方(控制台…)
2.2 当发生异常时,会开启doROLLback回滚,此时数据会按照原来的位置原封不动的回到Channel,Channel不会清空,此时Sink再重新dotake,不过此时可能会重复数据,比如数据已经到HDFS了,但是通信端口出问题,没有返回确认信息,此时Sink会认为数据没有放到HDFS,便重新拉取此数据

欢迎补充!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值