一 HDFS Sink
将event写入HDFS.
1.1 RequiredProperties
channel:从哪一个channelpull数据
type:hdfs
hdfs.path:HDFSdirectory path 比如hdfs://hadoop09-linux:8020/user/
hadoop/flume/hive/log
1.2 OptionalProperties
hdfs.filePrefix:被flume创建的文件名字前缀,默认是FlumeData
hdfs.fileSuffix:被flume创建的文件名字后缀,默认没有
hdfs.inUsePrefix:正在被flume写入数据的临时文件前缀
hdfs.inUseSuffix:正在被flume写入数据的临时文件后缀
hdfs.rollInterval:间隔多长将临时文件滚动成最终目标文件,单位:秒;默认30;如果设置成0,则表示不根据时间来滚动文件.将临时文件重命名成最终目标文件,并新打开一个临时文件来写入数据
hdfs.rollSize:当临时文件达到该大小(单位:bytes)时,滚动成目标文件;如果设置成0,则表示不根据临时文件大小来滚动文件;默认1024
hdfs.rollCount:当events数据达到该数量时候,将临时文件滚动成目标文件;如果设置成0,则表示不根据events数据来滚动文件;默认10
hdfs.idleTimeout:当目前被打开的临时文件在该参数指定的时间(秒)内,没有任何数据写入,则将该临时文件关闭并重命名成目标文件;
hdfs.batchSize:每次刷新到HDFS上的events数量;默认100
hdfs.codeC:指定压缩格式,包括gzip|bzip2|lzo|lzop|snappy
hdfs.fileType:文件类型SequenceFile|DataStream|CompressedStream,如果想查看文本内容,可以使用DataStream,但此时文件不会被压缩,不需要设置hdfs.codeC;当使用CompressedStream时候,必须设置一个正确的hdfs.codeC值
hdfs.maxOpenFiles:最大允许打开的HDFS文件数,当打开的文件数达到该值,最早打开的文件将会被关闭
hdfs.minBlockReplicas:写入HDFS文件块的最小副本数
hdfs.writeFormat:写sequence文件的格式。包含:Text|Writable,默认是Wirtable
hdfs.callTimeout: 允许执行HDFS操作的超时时间,比如open,write, flush, close ,如果很多HDFS超时操作发生,需要增加这个值,默认是10000毫秒
hdfs.threadsPoolSize:操作HDFS的线程数,默认10
hdfs.rollTimerPoolSize:根据时间滚动文件的线程数,默认1个
hdfs.kerberosPrincipal:用以安全访问Kerberosuser principal
hdfs.kerberosKeytab:用以安全访问Kerberoskeytab
hdfs.proxyUser:
hdfs.round:是否启用时间上的舍弃,这里的舍弃,类似于”四舍五入
hdfs.roundValue:时间上进行舍弃的值;
hdfs.roundUnit:时间上进行舍弃的单位,second|minute|hour
hdfs.timeZone:时区
hdfs.useLocalTimeStamp:是否使用当地时间
hdfs.closeTries:关闭文件的尝试次数。如果设置为1,当一次关闭文件失败后,hdfssink将不会再次尝试关闭文件,这个未关闭的文件将会一直留在那,并且是打开状态。设置为0,当一次关闭失败后,hdfssink会继续尝试下一次关闭,直到成功。
hdfs.retryInterval:尝试关闭文件的时间间隔,如果设置为0,表示不尝试,相当于于将hdfs.closeTries设置成1.默认180
serializer:序列化类型,默认TEXT
注意:对于所有和时间相关的转义字符,header必须存在timestamp这个key,除非你设置了hdfs.useLocalTimeStamp = true。否则不会生效
例子:
agent.sinks.sink1.type= hdfs
agent.sinks.sink1.hdfs.path= hdfs://hadoop09-linux:8020/user/hadoop/flume/hive/log/%Y%m%d
agent.sinks.sink1.hdfs.batchSize= 100
agent.sinks.sink1.hdfs.fileType= DataStream
agent.sinks.sink1.hdfs.writeFormat= Text
agent.sinks.sink1.hdfs.filePrefix= events-
agent.sinks.sink1.hdfs.round= true
agent.sinks.sink1.hdfs.roundValue= 10
agent.sinks.sink1.hdfs.roundUnit= minute
agent.sinks.sink1.hdfs.fileType= CompressedStream
agent.sinks.sink1.hdfs.codeC= snappy
agent.sinks.sink1.hdfs.threadsPoolSize= 10
agent.sinks.sink1.hdfs.useLocalTimeStamp= true
agent.sinks.sink1.hdfs.rollCount= 0
agent.sinks.sink1.hdfs.rollSize= 1048576
agent.sinks.sink1.hdfs.rollInterval= 0
二 Logger Sink
以INFO级别logevent,一般测试使用
2.1Required Properties
channel:从哪一个channelpull数据
type:logger
三 Avro Sink
Flumeevents 发送到Avrosink被转成avroevent,然后发送给配置的主机/端口对
3.1Required Properties
channel:从哪一个channelpull数据
type:avro
hostname:绑定的hostname或者ip
port:绑定的端口
3.2Optional Properties
batch-size:每一次发送的event数量
connect-timeout:第一次请求允许的毫秒数
request-timeout:第一次请求之后允许的毫秒数
reset-connection-interval:Sink从Source断开连接并重新连接之后的间隔
compression-type:压缩传入数据的压缩格式,none|deflate
compression-level:0= no compression , 1-9 is compression,数值越大,压缩比越大
ssl:是否启用ssl
trust-all-certs:如果为true,将不会在检查远端的服务器(AvroSources)SSL证书,不应该在生产环境使用这个
truststore:使用的truststore文件的路径
truststore-password: 用来打开truststore的密码
truststore-type:javatruststore类型,默认JKS
exclude-protocols:空格分割排除的协议,默认SSLv2HelloSSLv3
maxIoWorkers:最大的IO工作者线程数
例子:
a1.sinks.k1.type= avro
a1.sinks.k1.hostname= 192.168.3.40
a1.sinks.k1.port= 45450
四 Thrift Sink
Flumeevents 发送到ThriftSink被转成thriftevent,然后发送给配置的主机/端口对
4.1Required Properties
channel:从哪一个channelpull数据
type:thrift
hostname:绑定的hostname或者ip
port:绑定的端口
4.2Optional Properties
batch-size:每一次发送的event数量
connect-timeout:第一次请求允许的毫秒数
request-timeout:第一次请求之后允许的毫秒数
reset-connection-interval:Sink从Source断开连接并重新连接之后的间隔
例子:
a1.sinks.k1.type= thrift
a1.sinks.k1.channel= c1
a1.sinks.k1.hostname= 10.10.10.10
a1.sinks.k1.port= 4545
五 File Roll Sink
在本地文件系统存储events
5.1Required Properties
channel:从哪一个channelpull数据
type:file_roll
sink.directory:存储event的文件路径
5.2Optional Properties
sink.rollInterval:间隔多长将临时文件滚动成最终目标文件
sink.serializer:序列化类型,默认TEXT
batchSize: 每一次发送的event数量
例子:
a1.sinks.k1.type= file_roll
a1.sinks.k1.channel= c1
a1.sinks.k1.sink.directory= /var/log/flume
六 HBase Sinks
6.1HBaseSink
写数据到HBase,HBase的配置文件将会来自于hbase-site.xml.配置文件可以指定一个实现了HbaseEventSerializer的的class,用于转换events到HBase puts/increments.这些Puts/ increments然后写入到HBase.目前Flume提供了2个 序列化类:SimpleHbaseEventSerializerand RegexHbaseEventSerializer
6.1.1Required Properties
channel:从哪一个channelpull数据
type:hbase
table:写入到HBase的表名
columnFamily:Thecolumn family in Hbase to write to.
6.1.2Optional Properties
zookeeperQuorum:应该是在hbase-site.xml的hbase.zookeeper.quorum属性值
znodeParent:应该是在hbase-site.xml的zookeeper.znode.parent属性值
batchSize:每一次写入的events数量
serializer: 指定序列化的类,比如:org.apache.flume.sink.hbase.
SimpleHbaseEventSerializer
kerberosPrincipal:安全访问HBase的userprincipal
kerberosKeytab:安全访问HBase的Keytab
例子:
a1.sinks.k1.type= hbase
a1.sinks.k1.table= foo_table
a1.sinks.k1.columnFamily= bar_cf
a1.sinks.k1.serializer== org.apache.flume.sink.hbase.RegexHbaseEventSerializer
a1.sinks.k1.channel= c1
6.2AsyncHBaseSink
使用异步模式写数据到HBase,HBase的配置文件将会来自于hbase-site.xml.配置文件可以指定一个实现了AsyncHbaseEventSerializer的的class,用于转换events到HBase puts/increments
6.2.1Required Properties
channel:从哪一个channelpull数据
type:asynchbase
table:写入到HBase的表名
columnFamily:Thecolumn family in Hbase to write to.
6.2.2Optional Properties
zookeeperQuorum:应该是在hbase-site.xml的hbase.zookeeper.quorum属性值
znodeParent:应该是在hbase-site.xml的zookeeper.znode.parent属性值
batchSize:每一次写入的events数量
serializer: 指定序列化的类,比如:org.apache.flume.sink.hbase.
SimpleHbaseEventSerializer
kerberosPrincipal:安全访问HBase的userprincipal
kerberosKeytab:安全访问HBase的Keytab
例子:
a1.sinks.k1.type= asynchbase
a1.sinks.k1.table= foo_table
a1.sinks.k1.columnFamily= bar_cf
a1.sinks.k1.serializer= org.apache.flume.sink.hbase.SimpleAsyncHbaseEventSerializer
a1.sinks.k1.channel= c1
七 MorphlineSolr Sink(待研究)
这个Sink从FlumeEvent抽取数据,转换它,然后近实时的加载到Solr 服务器(ETL),然后服务于用户查询或者搜索请求.
ETL的功能可以通过morphlines配置文件来定制。Morphlines可以看做是一个Unix 管道的演变,产生的数据模型将会和recordstreams一起工作。Morphlines命令有点像Flume 拦截器。然后把它可以内嵌到hadoop组件中,比如Flume.
7.1Required Properties
channel:从哪一个channelpull数据
type:org.apache.flume.sink.solr.morphline.MorphlineSolrSink
morphlineFile:本地文件系统morphline的相对或者绝对路径,比如/etc/flume-ng/conf/morphline.conf
7.2Optional Properties
morphlineId:如果有多个morphline在morphline配置文件,我们可以设定一个标识符
batchSize:每一次flume 事务最大events数量,默认1000
batchDurationMillis:每一次flume 事务提交的时间间隔,超过这个时间就提交事务。活着batchSize达到阀值了,也要提交事务。
handlerClass:一个实现了org.apache.flume.sink.solr.morphline.
MorphlineHandler的类
例子:
a1.sinks.k1.type== org.apache.flume.sink.solr.morphline.
MorphlineSolrSink
a1.sinks.k1.channel= c1
a1.sinks.k1.morphlineFile= /etc/flume-ng/conf/morphline.conf
#a1.sinks.k1.morphlineId = morphline1
#a1.sinks.k1.batchSize = 1000
#a1.sinks.k1.batchDurationMillis = 1000
八 ElasticSearch Sink(待研究)
这个Sink主要写数据到ElasticSearch集群。
8.1Required Properties
channel:从哪一个channelpull数据
type:org.apache.flume.sink.elasticsearch.ElasticSearchSink
hostNames:ElasticSearch集群的服务器:端口列表,用逗号分隔。
8.2Optional Properties
indexName:索引名称会追加时间,Example'flume' -> 'flume-yyyy-MM-dd' 也支持标题的替换.
indexType:
clusterName:连接的ElasticSearch 集群的名字
batchSize:每次写入的event数量
ttl:指定ttl时间,过期了自动删除,没有设置,永不过期,使用integer或者long类型,单位可以是ms,s,m,h,d,w
serializer:序列化的类。org.apache.flume.sink.elasticsearch.ElasticSearch
LogStashEventSerializer
例子:
a1.sinks.k1.type= elasticsearch
a1.sinks.k1.hostNames= 127.0.0.1:9200,127.0.0.2:9300
a1.sinks.k1.indexName= foo_index
a1.sinks.k1.indexType= bar_type
a1.sinks.k1.clusterName= foobar_cluster
a1.sinks.k1.batchSize= 500
a1.sinks.k1.ttl= 5d
a1.sinks.k1.serializer= org.apache.flume.sink.elasticsearch.ElasticSearchDynamicSerializer
a1.sinks.k1.channel= c1
九 Kafka Sink
这个sink可以发布数据到kafka的topic上
9.1Required Properties
type:org.apache.flume.sink.kafka.KafkaSink
brokerList:连接kafkabroker的列表,获取一个topic 分区列表,broker用逗号分割
9.2Optional Properties
topic:要发布到什么topic
batchSize:每一次处理多少消息
例子:
a1.sinks.k1.type= org.apache.flume.sink.kafka.KafkaSink
a1.sinks.k1.topic= mytopic
a1.sinks.k1.brokerList= localhost:9092
a1.sinks.k1.requiredAcks= 1
a1.sinks.k1.batchSize= 20
a1.sinks.k1.channel= c1