Flume配置文件详解

Flume配置文件详解
1.基本组成

(1)source 是flume获取数据的部分,source的类型有很多种,这里只介绍两种我们常用的。
1.Avro Source:监听节点上的某个端口,负责接收被监听端口的Avro流事件作为数据源。我们cbas的flume集群组的source类型大多是这种。
配置方式如下:
xxx.sources = r1 定义一个名为r1的source
xxx.channels = c1 定义一个名为c1的channel
xxx.sources.r1.type = avro 指定r1的类型为avro
xxx.sources.r1.channels = c1 指定r1的channel为c1,意思是,r1获取的数据会放到c1这个临时通道中
如果一个source对应多个channel,则可以这样写:xxx.sources.r1.channels = c1 c2 c3 c4
xxx.sources.r1.bind = 0.0.0.0 监听的主机ip,默认0.0.0.0
xxx.sources.r1.port = 33333 监听端口,默认4141,cbas这边一般配置成33333
拦截器配置(event的header中添加自定义的key和value ):
xxx.sources.r1.interceptors = i7
xxx.sources.r1.interceptors.i7.type = static
xxx.sources.r1.interceptors.i7.key = type_log
xxx.sources.r1.interceptors.i7.value = pcNew_c10
2.Exec Source:通过执行一个给定的shell指令,来持续产生数据作为flume的数据源。比如tail -F指令。
配置方式如下:
xxx.sources = r1 定义一个名为r1的source
xxx.channels = c1 定义一个名为c1的channel
xxx.sources.r1.type = exec 指定r1的类型是exec
xxx.sources.r1.command = tail -F /test.log 把该shell指令的输出作为数据源
xxx.sources.r1.channels = c1 指定r1的channel为c1

(2)channel 是flume用于缓存source获取到的数据的中间层,连接source和sink。channel的类型也有很多种,只详细介绍一种。
1.Memory Channel:事件被存储在内存队列中,是最理想的类型。
2.File Channel:把磁盘作为存储介质。
3.Spillable Memory Channel:这种类型我我们最常用的类型,可以理解成Memory Channel和File Channel的混合体。当内存满的时候,才会启用磁盘存储。
Spillable Memory Channel的配置方式如下:
xxx.channels = c1 定义一个名为c1的channel
xxx.channels.c1.type = SPILLABLEMEMORY c1的类型设置成SPILLABLEMEMORY
xxx.channels.c1.memoryCapacity = 10000 内存队列中事件的最大存放数
xxx.channels.c1.overflowCapacity = 1000000 内存队列溢出之后,在磁盘中存放的最大事件数量
xxx.channels.c1.byteCapacity = 800000 内存队列中能够存放的最大字节数
xxx.channels.c1.transactionCapacity = 10000 channel从source一次获取的最大事件数量
xxx.channels.c1.checkpointDir = ${flume_home}/checkpoint 用于存放检查点的目录(用户可自定义)
xxx.channels.c1.dataDirs = ${flume_home}/data 内存队列溢出后,用于存放数据的磁盘目录(用户可自定义)

(3)sink 是flume处理数据流向的最终部分,从channel获取数据,根据sink的类型做不同的处理。
可能是写成log日志,可能是存到HDFS中,也可能是再次以avro的形式发送出去,这里也只介绍几种。
1.Avro Sink:我们采集源端(手机主站、web主站、行情主站等)的sink一般就是这种类型。
采集源端的flume集群的sink会把数据以avro的形式发送到cbas的flume集群节点的端口上,cbas的source以avro的形式接收。
Avro Sink的配置方式:
xxx.channels = c1 定义一个名为c1的channel
xxx.sinks = k1 定义一个名为k1的sink
xxx.sinks.k1.type = avro 定义sink的类型
xxx.sinks.k1.channel = c1 指定sink的数据来源为c1
xxx.sinks.k1.hostname = 10.10.10.10 avro发送目标的主机ip
xxx.sinks.k1.port = 4545 目标端口号
[编辑]Flume服务关闭指令
(1) 查找flume进程:ps aux | grep flume
(2) 杀死flume服务:kill {进程}
如果进程长时间杀不死,使用:kill -9 {进程}, 并清空{$flumeChannel_home}/flumeChannel下的所有文件;

你可能感兴趣的:(Flume配置文件详解)