Flume Sink

来源:互联网 发布:国际大酒店网站源码 编辑:程序博客网 时间:2024/06/05 22:35

一 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

 

 

 

原创粉丝点击