Flume各组件总结

一个Agent主要由三部分组成 Source Channel Sink

Source是负责接收数据到Flume Agent的组件。
类型如下:avor /thrift /exec /jms /spooling directory /netcat /sequence generator /syslog /http /legacy

  1. source

Avro source:监听Avro端口和从外部Avro端接收事件流 当与上一个flume agent搭配内置Avro sink 可以创建分层集合拓扑。

thrif source:监听Thrif端口并从外部Thrif客户端接收事件。

exec source:可以实时搜集数据,但是在Flume不运行或者Shell命令出错的情况下,数据将会丢失。 例如:通过tail -F去获取Nginx的访问日志,如果Flume挂掉,Nginx访问日志继续导入到日志文件中,那么在Flume挂掉的这段时间中,新产生的日志Flume是无法获取到的,为了更好的可靠性保证,可以考虑使用Spooling
Directory Source,拿实时获取Nginx访问日志来说,Spooling Directory
Source虽然做不到实时,但是也可以通过日志文件的切分,做到准实时。
spooling directory source:通过监听某个目录下的新增文件,并将文件的内容读取出来,实现日志信息的收集。实际使用中会结合log4j进行使用。被传输结束的文件会修改后缀名,添加.completed后缀(可以自定义)。
kafka source:Kafka Source是一个从Kafka主题读取消息的Apache Kafka消费者。 如果有多个Kafka源运行,可以使用相同的Consumer Group配置它们,这样每个都将为主题读取一组唯一的分区。
TailDirSource:断点续传、多目录。能够保证数据不丢失,还能够进行实时监控。Flume1.6以前需要自己自定义Source记录每次读取文件位置,实现断点续传。

2.sink

Sink组件目的地包括hdfs、logger、avro、thrift、ipc、file、HBase、solr、自定义。

3.channel

flume自带两种channel:Memory Channel 和 File Channel
Memory Channel是内存中队列:性能高 可能丢失数据
File Channel:将所有事件写入磁盘 不用担心数据丢失

4.Flume中channel选择器

flume channel selectors允许给一个source可以配置多个channel的能力。这种模式有两种方式,一种是用来复制(Replication),这也是默认配置,另一种是用来分流多路复用(Multiplexing)。
Flume中channel选择器(selector.type配置)必须实现ChannelSelector接口,实现了该接口的类主要作用是告诉Source中接收到的Event应该发送到哪些Channel,在Flume中主要由两个实现方式:
1,复用,实现类:MultiplexingChannelSelector (Multiplexing n. 多路技术 多路复用)
2,复制,实现类:ReplicatingChannelSelector (Replicate n. 复制品)
如果没有手动配置,source的默认channel选择器类型是replicating(复制),当然这个选择器只针对source配置了多个channel的时候。
一个souce可以向多个channel同时写数据,所以也就产生了以何种方式向多个channel写的问题(比如自带的复制选择器,会把数据完整地发送到每一个channel,而多路分发选择器就可以通过配置来按照一定的规则进行分发,听起来很像负载均衡),channel选择器也就应运而生。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值