0%

flume事务

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