一、Flume Source
Source类型 |
说明 |
Avro Source |
支持Avro协议(实际上是Avro RPC),内置支持 |
Thrift Source |
支持Thrift协议,内置支持 |
Exec Source |
基于Unix的command在标准输出上生产数据 |
JMS Source |
从JMS系统(消息、主题)中读取数据,ActiveMQ已经测试过 |
Spooling Directory Source |
监控指定目录内数据变更 |
Twitter 1% firehose Source |
通过API持续下载Twitter数据,试验性质 |
Netcat Source |
监控某个端口,将流经端口的每一个文本行数据作为Event输入 |
Sequence Generator Source |
序列生成器数据源,生产序列数据 |
Syslog Sources
syslogtcp
multiport_syslogtcp
syslogudp
|
读取syslog数据,产生Event,支持UDP和TCP两种协议 |
HTTP Source |
基于HTTP POST或GET方式的数据源,支持JSON、BLOB表示形式 |
Legacy Sources |
兼容老的Flume OG中Source(0.9.x版本) |
Avro Legacy Source |
|
Thrift Legacy Source |
|
Scribe Source |
|
Custom Source |
自定义Source |
二、Flume Sink
Sink类型 |
说明 |
HDFS Sink |
数据写入HDFS |
Logger Sink |
数据写入日志文件 |
Avro Sink |
数据被转换成Avro Event,然后发送到配置的RPC端口上 |
Thrift Sink |
数据被转换成Thrift Event,然后发送到配置的RPC端口上 |
IRC Sink |
数据在IRC上进行回放 |
File Roll Sink |
存储数据到本地文件系统 |
Null Sink |
丢弃到所有数据 |
HBase Sink |
数据写入HBase数据库 |
Morphline Solr Sink |
数据发送到Solr搜索服务器(集群) |
ElasticSearch Sink |
数据发送到Elastic Search搜索服务器(集群) |
Kite Dataset Sink |
写数据到Kite Dataset,试验性质的 |
Custom Sink |
自定义Sink实现 |
三、Flume Channel
Channel类型 |
说明 |
Memory Channel |
Event数据存储在内存中 |
JDBC Channel |
Event数据存储在持久化存储中,当前Flume Channel内置支持Derby |
File Channel |
Event数据存储在磁盘文件中 |
Spillable Memory Channel |
Event数据存储在内存中和磁盘上,当内存队列满了,会持久化到磁盘文件(当前试验性的,不建议生产环境使用) |
Pseudo Transaction Channel |
测试用途 |
Custom Channel |
自定义Channel实现 |
Channel Selector
Sink Processor
Event Serializer
Event Deserializers
在source组件上指定,反序列化,将输入(文件、流)解析成event的方式,
Deserializer类型 |
说明 |
LINE |
默认值,将文本输入的每行转换成一个event |
AVRO |
读取avro文件,将其中的每条avro记录转换成一个event,每个event都附带着模式信息 |
BlobDeserializer |
将整个二进制大数据转换成一个evnt,通常一个BLOB就是一个文件,比如PDF、JPG |
比如:
1
2
|
a1.sources=s1
a1.sources.s1.deserializer=LINE
|
注意:
LINE有个设置每行字符个数的属性:deserializer.maxLineLength,默认是2048,大于这个字符数的行将被截断。
BlobDeserializer有个设置文件大小的属性:deserializer.maxBlobLength默认是100000000(大约95M),大于这个值的文件将被拆分成多个文件。
Event Serializers
在sink组将上指定,序列化,将event对象转换成文件的方式。
Serializer类型 |
说明 |
TEXT(Body Text Serializer) |
默认值,将event中body里的数据不做改变的转换成输出流,event的header将被忽略 |
AVRO_EVENT(Avro Event Serializer) |
将event转换成avro文件 |
BlobDeserializer |
将整个二进制大数据转换成一个evnt,通常一个BLOB就是一个文件,比如PDF、JPG |
Interceptor
拦截器可以修改或删除event。
拦截器可以组成拦截器链,中间用空格分隔,拦截器的配置顺序即是它们的执行顺序。
Handler类型 |
说明 |
Timestamp Interceptor |
向event header中添加了timestamp变量,值是时间戳 |
Host Interceptor |
向event header中添加了host变量,可以通%{host}引用(比如在HDFS sink中的路径占位符) |
Static Interceptor |
配置一个静态的值到event header里,多个静态值需要配多个static interceptor |
UUID Interceptor |
向event header里添加变量id,值是随机生成的uuid,可以用这个唯一标识一个event |
Morphline Interceptor |
使用morphline配置文件过滤event。 |
Regex Filtering Interceptor |
使用正则表达式过滤(include或exclude)event。 |
Regex Extractor Interceptor |
使用正则表达式来向header中添加key、value。 |
配置实例:
1
2
3
4
5
6
|
a1.sources=s1
...
a1.sources.s1.interceptors=i1 i2
a1.sources.s1.interceptors.i1.type=host
a1.sources.s1.interceptors.i1.hostHeader=host
a1.sources.s1.interceptors.i2.type=timestamp
|
type可以是全限定类名或者是别名
|