实际开发中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. |