天天看点

Flume组件简介

FLume 是通过agent(代理)为最小的独立运行单位,agent包括Source,Channel,Sink

Source:

1)NetCat Source

使用TCP和UDP两种协议方式,使用方法基本相同,通过监听指定的IP和端口来传输数据,它会将监听到的每一行数据转化成一个Event写入到Channel中

2)Avro Source(读音类似于[ævrə]) (https://blog.csdn.net/zhouleilei/article/details/8537831)

Avro Source可以定制avro-client发送一个指定的文件给Flume agent,Avro源使用Avro RPC机制,Flume主要的RPC Source也是 Avro Source,它使用Netty-Avro inter-process的通信(IPC)协议来通信,因此可以用java或JVM语言发送数据到Avro Source端。

3)Exec类型的Source

a1.sources.r1.command=tail -f /tmp/err.log 要执行的命令

4)Taildir Source

监控指定的多个文件,一旦文件内有新写入的数据,就会将其写入到指定的sink内,本来源可靠性高,不会丢失数据,建议使用

5)Spooling Directory类型的 Source:

指定的文件加入到“自动搜集”目录中。flume会持续监听这个目录,把文件当做source来处理

6)Kafka Source

支持从Kafka指定的topic中读取数据

7)自定义Source(继承封装)

Channel:

1)Memory Channel(内存Channels)

events存储在配置最大大小的内存队列中。对于流量较高和由于agent故障而准备丢失数据的流程来说,这是一个理想的选择。

2)file channel(磁盘持久化)

File Channel是一个持久化的隧道(channel),数据安全并且只要磁盘空间足够,它就可以将数据存储到磁盘上。

3) JDBC Channel(数据库)

events存储在持久化存储数据库中

4)Kafka Channel

events存储在Kafka集群中。Kafka提供高可用性和高可靠性,所以当agent或者kafka broker 崩溃时,events能马上被其他sinks可用。

5)自定义channel

Sink:

1)File Roll

存储于本地系统中。

2)Avro

是实现多级流动、扇出流(1到多) 扇入流(多到1) 的基础。

3)HDFS

此Sink将事件写入到Hadoop分布式文件系统HDFS中目前它支持创建文本文件和序,列化文件。

拦截器:

设置在source和channel之间。source接收到的时间,在写入channel之前,拦截器都可以进行转换或者删除这些事件。每个拦截器只处理同一个source接收到的事件。可以自定义拦截器。

1)Timestamp (时间戳拦截器)

2)Host (主机拦截器)

3)Static(静态拦截器)

4)REGEX_FILTER (正则过滤拦截器)

5)Regex_Extractor(正则匹配拦截器)

6)UUID(UUID拦截器)

7)自定义拦截器(java)