Flume拦截器-应用与配置

Flume的拦截器是Source与Channel之间的组件,用于事件的拦截、转换或删除。本文介绍了时间戳、主机、静态、正则过滤、Regex Extractor、UUID以及自定义拦截器的使用和配置,强调了拦截器在线程安全和性能优化方面的重要性。

Flume最重要的组件是Source、Channel和Sink,另外,Flume Agent还有一些使Flume更加灵活的组件,如拦截器,Channel选择器,Sink组和Sink选择器。本文将讨论一下拦截器的应用。

拦截器

拦截器(Interceptor)是简单的插入式组件,设置在Source和Source写入数据的Channel之间,Source接收到的事件在写入到Channel之前,拦截器都可以对时间进行拦截,转换或删除这些时间。每个拦截器实例只处理同一个Source接受到的事件。

可以添加任意数量的拦截器去处理从单个Source传来的事件,Source将同一个事务中的所有事件传递给Channel处理器,进而传递给拦截器链,然后事件被传递给拦截器链的第一个拦截器,之后对事件进行转换处理,往下一个拦截器传递,依次直到最后一个拦截器返回的事件写入到Channel中。

拦截器必须在事件写入到Channel之前完成处理,因此在拦截器中进行大量的耗时处理不太合适,如果拦截器的处理非常耗时,需要相应调整响应超时时间。防止由于长时间没有响应发送事件的客户端或者Sink,而导致超时。

拦截器是需要命名的组件,每个拦截器都需要限定一个名字。拦截器的配置需要以interceptor开头、后面跟着拦截器的名称,以及配置项名称。

下面是拦截器配置示例

a1.sources = r1
a1.sinks = k1
a1.channels = c1
a1.sources.r1.interceptors = i1 i2
a1.sources.r1.interceptors.i1.type = org.apache.flume.interceptor.HostInterceptor$Builder
a1.sources.r1.interceptors.i1.preserveExisting = false
a1.sources.r1.interceptors.i1.hostHeader = hostname
a1.sources.r1.interceptors.i2.type = org.apache.flume.interceptor.TimestampInterceptor$Builder
a1.sinks.k1.filePrefix = FlumeData.%{CollectorHost}.%Y-%m-%d
a1.sinks.k1.channel = c1

时间戳拦截器

Flume中最常用的拦截器是时间戳拦截器,该拦截器将时间戳插入到Flume事件的报头,附带的timeStamp是HDFS Sink用来分桶的报头。如果时间戳报头已经存在,则会替换该时间戳报头,除非preserveExisting参数设置为true。该拦截器经常用在第一层agent,用于从客户端接受数据。

参数 描述
type timestamp
preserveExisting 默认值false。如果设置为true,若时间戳报头以及存在,则不会替换该时间戳报头

配置示例

a1.sources = r1
a1.channels = c1
a1.sources.r1.channels =  c1
a1.sources.r1.type = seq
a1.sources.r1.interc
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值