实际开发中Flume中常用的source源,sink,channel,intercepertor等介绍,而实际上关于agent代理中设置选项有很多,具体要到官网去查看。


组件

使用介绍

 

 

 

 

 

source

数据源

Avro

监听由Avro sink 或Flume SDK 通过Avro RPC发送的事件所抵达的端口

Exec

运行一个Unix命令(例如 tail -F /path/to/file),并且把从标准输出上读取的行转化为事件。但是要注意,此source不一定能保证把事件传送到channel,更好的选择可以参考spooling directory source 或者Flume SDK.

HTTP

监听一个端口,并且使用可插拔句柄,比如JSON处理程序或者二进制数据处理程序,把HTTP请求转换成事件

JMS

读取来自JMS Queue或者Topic的消息并将其转换成事件

Spooling directory

/spooldir

按行读取保存在缓冲目录中的文件,并将其转换为事件。

Netcat

监听一个端口,并把每行文本转换为一个事件

Syslog

从日志中读取行,并将其转换为事件

Thrift

监听由Thrift sink或Flume SDK通过Thrift RPC发送的事件所抵达的窗口

Squence genetartor

依据增量计数器来生成事件,主要用来测试用

kafka

监听kafka的Topic,当成事件


组件

使用介绍

 

 

 

 

 

sink

目地

HDFS

以文本,序列化文件,Avro或定制格式写入到HDFS中。

HBASE

使用某种序列化工具将数据写入到HBASE中

Logger

使用SLF4J记录INFO级别的事件,主要用来测试

kafka

将事件写入到kafka消息缓存对列

Elasticcsearch

使用Logstash格式将事件写入到Elasticsearch集群中

NULL

丢弃所有事件

Avro

通过Avro RPC发送事件到一个Avro source群中

File roll

将事件写入到本地文件系统

Hive

将事件按固定的格式导入到hive表中或者对应的分区里。

IRC

将事件发送给IRC通道


组件

使用介绍


channel

通道

file

将事件存储在一个本地文件系统上的事务日志中。这种类型的channel具有持久性:只要事件被写入channel,即使使用了代理,代理重新启动,事件也不会丢失。agent1.channnels.channel1.type=file 

memory

将事件缓存到内存中,因此不具有持久性存储能力。所以采用memory channel时,如果代理重新启动,事件就会丢失。在有些时候这种情况允许。和file channel相比,memory channel 速度快,吞吐量较高

agent1.channnels.channel1.type=memory

 jdbc

将事件存储到数据库中。


组件

使用介绍

 

 

 

 

拦截器

interce-ptor

 

Timestamp

给特定source传递过来的事件加一个时间戳header.其中包含的是代理处理事件的时间,以ms为单位。具体参考博客Flume拦截器那篇

   agent1.sources.souce1.interceptors = interceptor1

   agent1.sources.source1.interceptors.interceptor1.type = timestamp。

UUID

在所有的事件上设置一个ID header,它是一个全局的唯一标识符,对将来删除重复数据有用。

agent1.sources.source1.interceptors.interceptor1.type

=

org.apache.flume.sink.solr.morphline.UUIDInterceptor$Builder

 static

将所有的事件上设置一个固定的header及其值。具体参考官网

 Host

将所有事件上设置一个包含代理主机名或IP地址的主机header.