flume笔记(一)

来源:互联网 发布:药智网医保目录数据库 编辑:程序博客网 时间:2024/06/05 11:19

从不同的源收集,聚合日志,传输到存储系统。

 


 

 

source用来读取数据,可以是各种客户端,或者来自另一个agent,存入channelsink来消费,整个过程是异步的。

 

event只有在被成功存入下一个agentchannel里(多个agent)或最终目的地(单个agent)时才删除,确保可靠性。

 

Channel有文件和内存两种。

 

多个实例要指定<conf-dir>,包含flume_env.shlog4j文件配置。

使用第三方插件的jar包要加入flume-env.sh中的FLUME_CLASSPATH变量。

 

flume启动时加载$FLUME_HOME/plugins.d

插件目录结构:

lib - the plugin’sjar(s)

libext - the plugin’sdependency jar(s)

native - any requirednative libraries, such as .so files

 

数据源类型:

 

rpc

内置avro客户端可以发送给flumesource文件:bin/flume-ngavro-client -H localhost -p 41414 -F /usr/logs/log.10

 

exec

执行命令,结果传入flume。例如,封装tail命令。

 

网络流:

Avro

Thrift

Syslog

Netcat

 

多个agent时,之间使用avro rpc来连接,前面agentsink和后面agentsource类型都是avro

 

经典场景:

 


 

 

 

特殊场景:

 


 

 

 

不规则流:

 

复制:数据发送到每个channel

选择分发:根据条件选择一个或多个channel发送

 

agent_foo.sources.avro-AppSrv-source1.selector.optional.CA= mem-channel-1 file-channel-2

 

Selector先发送必须的,失败会重发,全部发完后会尝试发送optional,失败不重发。

 

require先发required,再发default,再发optional

 

 

问题:

1default失败会重发吗?

2、如果一个channel同时是requiredoptional会重复发送吗?

 

 

AvroSource:可配置拦截器,是否压缩,ssl,ip过滤,

ipFilter.rules=allow:ip:127.*,allow:name:localhost,deny:ip:*

过滤除本机外的其他客户端ip

 

 

Thrift Source:

ExecSource:没有安全保证,建议用sdk提供的source

 

JMSSource:接收队列或主题。默认可以转换Bytes, Text, Object 消息为 FlumeEvents。

 

Spooling DirectorySource:(比较有用)

监测新文件并读取,成功发送到channel后重命名或删除,可配置。

每个文件名要唯一(在过去,现在,将来)

 

type        spooldir.

spoolDir        要监测的目录

fileSuffix        .COMPLETED        文件读完后加后缀

deletePolicy        never        文件读完后删除策略,neveror immediate

fileHeader        false        文件绝对路径名加入文件头

fileHeaderKey        file        

basenameHeader        false        文件名加入文件头

basenameHeaderKey        basename        

ignorePattern        ^$        要忽略的文件样式

trackerDir        .flumespool        保存正在处理的文件的元数据的文件,如果是相对路径,则相对于spooldir

consumeOrder        oldest        文件读取顺序oldest, youngest and random. 如果是 oldest 或youngest, 比较文件最后修   改时间.一样的话按词典序消费.

maxBackoff        4000        channel写满后最大等待时间。

batchSize        100        

inputCharset        UTF-8        

decodeErrorPolicy        FAIL        遇到不能解码的字符如何处理.FAIL: 直接抛异常. REPLACE: 替换成别的. IGNORE: 忽略。

deserializer        LINE        序列化配置实现EventDeserializer.Builder.内置有BlobDeserializer,AVROLINE

deserializer.*                

bufferMaxLines        –        (Obselete)This option is now ignored.

bufferMaxLineLength        5000        (Deprecated)Maximum length of a line in the commit buffer. Use deserializer.maxLineLengthinstead.

selector.type        replicating        replicatingor multiplexing

selector.*                Depends on the selector.typevalue

interceptors        –        Space-separatedlist of interceptors

interceptors.*                

 

Twitter1% firehose Source(开发试验中),看名字就知道可以忽略。

 

NetCatSource:类似nc,监听一个端口

SequenceGenerator Source:0,1,2,3,4.。。

Syslog Sources:

SyslogTCP Source:按行读

MultiportSyslog TCP Source:空格隔开端口

SyslogUDP Source:读整个消息

HTTPSource:接收post请求数据。通过handler插件转换成flumeevents,一次请求的所有数据转换成的events在一次事务中。自己写要实现HTTPSourceHandler 接口。内置handler有JSONHandler,blobhandler

LegacySources:接收低版本flume agent的数据。Avro和 Thrift 。

Custom Source:自定义

Scribe Source:

 

HDFSSink:目前支持text和序列化格式及他们的压缩。根据时间周期或文件大小创建多个文件。可以根据时间戳或来源机器分区分桶。输出目录支持多种转义序列。正在写的文件后缀.tmp.

 

LoggerSink:测试,debug

 

Avro Sink

Thrift Sink

IRC Sink:

File Roll Sink(比较有用)

 

HBaseSink:默认实现了两个Serializer,一个直接put,增加column(可选),另一个通过正则解析后插到不同的列。

AsyncHBaseSink:

MorphlineSolrSink:写到solrserver

ElasticSearchSink:

 

 

Memory Channel

JDBCChannel:目前支持Derby

File Channel

 

 

环境配置:

 

1、下载,解压,配置环境变量。

2、修改配置文件conf/flume-conf.properties

 

启动agent:flume-ng agent--conf conf --conf-fileconf/flume-conf.properties --name producer-Dflume.root.logger=INFO,console

0 0
原创粉丝点击