flume 采集写入hbase速度越来越慢_Flume中的事务

本文详细解析了Flume中的Put和Take事务。Put事务涉及Source到Channel的数据传输,通过doPut和doCommit操作确保数据原子性,若Channel满则触发回滚。Take事务描述了Channel到Sink的数据流动,批量取出并提交到HDFS,异常时通过doRollback回滚,可能引发数据重复问题。
摘要由CSDN通过智能技术生成

一提到事务,首先就想到的是关系型数据库中的事务,事务一个典型的特征就是将一批操作做成原子性的,要么都成功,要么都失败。

在Flume中一共有两个事务:

  • Put事务:在Source到Channel之间
  • Take事务:Channel到Sink之间

从Source到Channel过程中,数据在Flume中会被封装成Event对象,也就是一批Event,把这批Event放到一个事务中,把这个事务也就是这批event一次性的放入Channel中。同理,Take事务的时候,也是把这一批event组成的事务统一拿出来到sink放到HDFS上。

Flume中的Put事务

  • 事务开始的时候会调用一个doPut 方法,doPut方法将一批数据放在putList中;
    • putList在向Channel发送数据之前先检查Channel的容量能否放得下,如果放不下一个都不放,只能doRollback;
    • 数据批的大小取决于配置参数batch size的值;
    • putList的大小取决于配置Channel的参数transaction capacity的大小,该参数大小就体现在putList上;(Channel的另一个参数capacity指的是Channel的容量);
  • 数据顺利的放到putList之后,接下来可以调用doCommit方法,把putList中所有的Event放到 Channel 中,成功放完之后就清空putList;

在doCommit提交之后,事务在向Channel存放数据的过程中,事务容易出问题。如Sink取数据慢,而Source放数据速度快,容易造成Chann

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值