flume

flume

一、event 事件
  flume的核心是把数据从数据源(source)收集过来,在将收集到的数据
送到指定的目的地(sink)。为了保证输送的过程一定成功,在送到目的地(sink)之前,会先缓存数据(channel),待数据真正到达目的地(sink)后,flume在删除自己缓存的数据。在整个数据的传输的过程中,流动的是event,即事务保证是在event级别进行的。那么什么是event呢?—–event将传输的数据进行封装,是flume传输数据的基本单位,如果是文本文件,通常是一行记录,event也是事务的基本单位。event从source,流向channel,再到sink,本身为一个字节数组,并可携带headers(头信息)信息。event代表着一个数据的最小完整单元,从外部数据源来,向外部的目的地去。
二、flume的运行机制
  flume运行的核心就是agent,agent本身是一个Java进程,agent里面包含3个核心的组件:source—->channel—–>sink,类似生产者、仓库、消费者的架构。
  source:source组件是专门用来收集数据的,可以处理各种类型、各种格式的日志数据,包括avro、thrift、exec、jms、spooling directory、netcat、sequence、generator、syslog、http、legacy、自定义。
  channel:source组件把数据收集来以后,临时存放在channel中,即channel组件在agent中是专门用来存放临时数据的——对采集到的数据进行简单的缓存,可以存放在memory、jdbc、file等等。
  sink:sink组件是用于把数据发送到目的地的组件,目的地包括
hdfs、logger、avro、thrift、ipc、file、null、hbase、solr、自定义。
一个完整的工作流程:source不断的接收数据,将数据封装成一个一个的event,然后将event发送给channel,chanel作为一个缓冲区会临时存放这些event数据,随后sink会将channel中的event数据发送到指定的地方—-例如HDFS等。注:只有在sink将channel中的数据成功发送出去之后,channel才会将临时event数据进行删除,这种机制保证了数据传输的可靠性与安全性。
三、flume的用法
  数据流合并(扇入流):配置大量第一层的agent,每一个agent都有一个
avro sink,让它们都指向同一个agent的avro source(强调一下,在这样一个场
景下你也可以使用thrift source/sink/client)。在第二层agent上的source将收
到的event合并到一个channel中,event被一个sink消费到它的最终的目的地。
  数据流复用(扇出流):agent foo中source扇出数据流到三个不同的channel,这个扇出可以是复制或者多路输出。在复制数据流的情况下,每一个event被发送所有的三个channel;在多路输出的情况下,一个event被发送到一部分可用的channel中,它们是根据event的属性和预先配置的值选择channel的。 这些映射关系应该被填写在agent的配置文件中。
四、Flume的特性
  可靠性:事务型的数据传递,保证数据的可靠性一个日志交给flume来处理,不会出现此日志丢失或未被处理的情况。
  可恢复性:通道可以以内存或文件的方式实现,内存更快,但不可恢复。文件较慢但提供了可恢复性。
五、flume的Selector
  选择器可以工作在复制、多路复用(路由) 模式下Selector 默认是复制模式(replicating),即把source的数据进行复制(比如扇出流的实现),然后分发给多个sink。用户可以指定转发的规则。selector根据规则进行数据的分发。
六、flume的Interceptors
  Flume有能力在运行阶段修改/删除Event,这是通过拦截(Interceptors)来实现的。拦截器需要实现org.apache.flume.interceptor.Interceptor接口。
拦截器可以修改或删除事件基于开发者在选择器中选择的任何条件。拦截器采用了责任链模式,多个拦截器可以按指定顺序拦截。一个拦截器返回的事件列表被传递给链中的下一个拦截器。如果一个拦截器需要删除事件,它只需要在返回的事件集中不包含要删除的事件即可。如果要删除所有事件,只需返回一个空列表。
七、flume的Process
  Sink Group允许用户将多个Sink组合成一个实体。Flume Sink Processor 可以通过切换组内Sink用来实现负载均衡的效果,或在一个Sink故障时切换到另一个Sink。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值