Flume学习05

Channel Selector

Channel有两种选择器,分别是Replicating和Multiplexing,如果不指定选择器,默认使用Replicating选择器。

Replicating Selector

Replicating选择器把Event复制多份,每个Channel都会接收到相同的Event。如果Source与3个Channel关联,那么这3个Channel都会收到同样数量的Event。Source默认使用Replicating选择器。

a1.sources = r1
a1.channels = c1 c2 c3
a1.source.r1.selector.type = replicating
a1.source.r1.channels = c1 c2 c3
a1.source.r1.selector.optional = c3


Multiplexing Selector

Multiplexing是分流选择器,对Event数据进行过滤,根据消息头属性把Event分发到不同的Channel中。Multiplexing不是默认选择器,需要配置。下面的配置根据Event的Header属性state进行分流,如果state是CZ就发送到Channel c1中,如果state是US就发送到Channel c2和Channel c3中,如果都不是就发送到Channel c4中。

a1.sources = r1
a1.channels = c1 c2 c3 c4
a1.sources.r1.selector.type = multiplexing
a1.sources.r1.selector.header = state
a1.sources.r1.selector.mapping.CZ = c1
a1.sources.r1.selector.mapping.US = c2 c3
a1.sources.r1.selector.default = c4


Sink Processors

Sink支持分组,可以把多个Sink放到一个分组里面,作为一个整体对外服务。Sink分组有三种类型的处理器,分别是default、failover和load_balance。
default处理器只支持单个Sink,如果分组里只有一个Sink,那么这个分组的处理器可以设置为default。通常情况下没有必要为单个Sink创建分组。
failover处理器维护一个优先级列表Sink,列表中有多个Sink,从而保证Event数据能够得到及时的处理。failover的机制是每个Sink都有个连续失败计数器,当Sink连续失败次数达到阀值时,该Sink会被降低优先级并放到冷却池中,Sink在冷却池中冷却一段时间后再启用。如果Sink成功发送一个Event,则会被恢复到活动池中。每个Sink都有优先级,优先级越高,数值越大,例如100优先级高于80优先级。如果一个Sink发送Event失败,拥有最高优先级的Sink会尝试发送失败的Event。

a1.sinkgroups = g1
a1.sinkgroups.g1.sinks = k1 k2
a1.sinkgroups.g1.processor.type = failover
a1.sinkgroups.g1.processor.priority.k1 = 5
a1.sinkgroups.g1.processor.priority.k2 = 10
a1.sinkgroups.g1.processor.maxpenalty = 10000

上面配置分组有k1、k2两个Sink,处理器类型为failover,k1的优先级是5,k2的优先级是10,maxpenalty是最大冷却时间。
负载均衡策略有round_robin和random,负载均衡配置如下。

a1.sinkgroups = g1
a1.sinkgroups.g1.sinks = k1 k2
a1.sinkgroups.g1.processor.type = load_balance
a1.sinkgroups.g1.processor.backoff = true
a1.sinkgroups.g1.processor.selector = random


Flume Interceptors

Flume支持拦截器链,拦截器可以修改和丢弃Event数据(功能类似Java Web的过滤器或者Spring MVC的拦截器)。Flume自定义拦截器只要实现org.apache.flume.interceptor.Interceptor接口即可。拦截器调用的顺序在配置文件中配置,每个拦截器在调用完成后都要返回Event数据列表,如果想抛弃Event数据,只要把数据从列表中移除即可。

名称 说明
Timestamp Interceptor 时间戳拦截器在Event的Header中插入当前时间戳,时间戳的key是timestamp,值是当前时间。
Host Intercerptor 主机拦截器在Event的Header中插入当前Agent的主机名或者IP地址。Header的key值默认是host,也可以在配置项hostHeader中修改。
Static Interceptor 静态拦截器允许在头部中添加一些固定内容,每个静态拦截器只能添加一个头部内容,如果要加多个头部内容,需要配多个静态拦截器。
UUID Interceptor UUID拦截器在每个Event的Header中加入唯一序列。Header的key默认是id,可以在配置项headerName中修改。
Morphline Interceptor
Search and Replace Interceptor 该拦截器通过正则表达式查找和替换Event数据中的文本内容。
Regex Filtering Interceptor 该拦截器通过正则表达式匹配Event中的文本内容,从而实现对Event的过滤。
Regex Extractor Interceptor 该拦截器通过正则表达式匹配Event中的文本内容,把匹配到的内容写到Header中。

猜你喜欢

转载自blog.csdn.net/accountwcx/article/details/49300953