flume框架原理

一、flume事物

在这里插入图片描述

上图所示

Source向Channel推送数据前会开启一个Put事物
Put事物流程:

  1. 调用doPut方法将数据先写入到临时缓冲区putList
  2. 再调用doCommit方法检测channel内存队列是否足够
  3. 如果内存够则将数据写入到channel中,如果内存空间不够则调用doRollback方法,回滚数据,将数据写入到source中

sink向Channel拉取数据前会开启一个Take事物
Take事物流程:

  1. 调用doTake将数据先写入到临时缓冲区takeList中,之后将数据发送到HDFS中
  2. 再调用doCommit方法,如果数据全部发送成功,则清除临时缓冲区takeList
  3. 如果发生不成功则调用doRollback方法,将临时缓冲区takeList中的数据归还给channel内存队列

二、flume内部原理

在这里插入图片描述

  1. Source接收数据
  2. Source将数据传给Channel Processor(处理器)
  3. 将事件传给拦截器(进行数据的处理),然后再将数据传给Channel Processor
  4. Channel Processor将数据发送给Channel Selector(选择器)
    选择器有两大策略
    Replicatiing Channel Selector(默认的)复制机制:将Source发来的数据发给所有的Channel。比如一个Source绑定了两个Channel,就把同样的一份数据发给两个Channel
    Multiplexing Channel Selector多路复用机制:可以配置参数,将Source发来的数据选择性的发给哪些Channel
  5. 然后数据再返回给Channel Processor(处理器)
  6. 根据上面的选择器的策略,将事件写入相应的Channel
  7. sink Processor(sink组)主动向Channel拉取数据
    三种拉取策略
    DefaultSinkProcessor:对应的是单个Sink
    LoadBalancingSinkProcessor:可以实现负载均衡的功能,数据分散给多个sink拉取数据
    FailoverSinkProcessor:故障转移,可以错误恢复的功能。可以在多个sink中设置优先级,比如优先级最高的sink在拉取数据时挂掉了,那么在剩下的sink中,选择优先级最高的继续进行拉取数据;如果挂掉的sink恢复了,则会使用优先级最高的进行拉取数据
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

王博1999

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值