首页 > 编程学习 > flume框架原理

flume框架原理

发布时间:2022/11/7 11:19:14

学习内容

  • 一、flume事物
  • 二、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恢复了,则会使用优先级最高的进行拉取数据
Copyright © 2010-2022 dgrt.cn 版权所有 |关于我们| 联系方式