flume事务
flume为了保证数据的原子性,内部存在了事务功能,在Source->Channel过程中存在一个事务,在Channel->Sink过程中存在一个事务
Put事务
在Source->Channel过程中存在的事务是Put事务
事务流程
- doPut 将批数据写入到临时缓冲区putlist中
- doCommit 检查channel中内存是否足够
- doRollback channel中内存不足,回滚数据至putlist中
Take事务
在Channel->Sink过程中存在的事务是Take事务
事务流程
- doTake 将数据取到临时缓冲区takelist,将数据发送给sink对应的目的地
- doCommit 如果数据发送成功,清空takelist
- doRollback 如果数据发送失败,将缓冲区takelist中的数据返回给channel