Flume - 拦截器、ETL和Routing

拦截器可以在source之后或者sink之前加入。

往source上添加拦截器:

agent.sources.s1.interceptors=i1 i2 i3

定义三个拦截器,i1,i2和i3.i2将接收i1的输出,i3将接收i2的输出,channel选择器接收i3的输出。

Timestamp拦截器

在header中不存在timestamp时添加该属性:

agent.sources.s1.interceptors=i1

agent.sources.s1.interceptors.i1.type=timestamp

agent.sources.s1.interceptors.i1.preserveExisting=true

Host拦截器

想在header中添加一个relayHost的key,通过DNS反向查找得到的hostname的value值:

agent.sources.s1.interceptors=i1

agent.sources.s1.interceptors.i1.type=host

agent.sources.s1.interceptors.i1.hostHeader=relayHost

agent.sources.s1.interceptors.i1.useIP=false

static拦截器

用来往经过的所有Flumeevent的header中插入单个任何形式的key/value的。

假设在先前不存在这两个值的情况下插入两个新的header值得例子:

agent.sources.s1.interceptors=pos env

agent.sources.s1.interceptors.pos.type=static

agent.sources.s1.interceptors.pos.key=pointOfSale

agent.sources.s1.interceptors.pos.value=US

agent.sources.s1.interceptors.env.type=static

agent.sources.s1.interceptors.env.key=environment

agent.sources.s1.interceptors.value=staging

正则表达式过滤拦截器

任何包含“NullPointerException”字符串的event都会被丢弃掉

agent.sources.s1.interceptors=npe

agent.sources.s1.interceptors.npe.type=regex_filter

agent.sources.s1.interceptors.npe.regex=NullPointerException

agent.sources.s1.interceptors.excludeEvents=true

正则表达式提取拦截器

自定义拦截器

 

最常见的串联Flumeagent的方式是配对使用Avro Source和Sink

要使用AvroSource,需要设置type为avro,指定坚挺的额地址和端口号:

collector.sources=av1

collector.sources.av1.type=avro

collector.sources.av1.bind=0.0.0.0

collector.sources.av1.port=42424

collector.sources.av1.channels=ch1

collector.channels=ch1

collector.channels.ch1.type=memory

collector.sinks=k1

collector.sinks.k1.type=hdfs

collector.sinks.k1.channel=ch1

collector.sinks.hdfs.path=/path/in/hdfs

agent将监听42424端口,使用内存channel,然后写数据到HDFS中。

综合案例:捕获所有HDFS的异常,event来自于Avro Source s1监听的端口42424,Event被检测是否内容中包含“Exception”。如果包含了,就在event的header中创建一个名为“exception”的key,将这些event选择进入channel c1中,最后写入HDFS中。如果没有匹配这个正则表达式,传输到默认的channel c2中。将通过Avro序列化传输到服务器foo.example.com的端口12345中去。

agent.sources=s1

agent.sources.s1.type=avro

agent.sources.s1.bind=0.0.0.0

agent.sources.s1.port=42424

agent.sources.s1.interceptors=i1

agent.sources.s1.interceptors.i1.type=regex_extractor

agent.sources.s1.interceptors.i1.regex=(Exception)

agent.sources.s1.interceptors.i1.serializers=ex

agent.sources.s1.interceptors.i1.serializers.ex.name=exception

agent.sources.s1.selector.type=multiplexing

agent.sources.s1.selector.header=exception

agent.sources.s1.selector.mapping.Exception=c1

agent.sources.s1.selector.default=c2

agent.channels=c1 c2

agent.channels.c1.type=memory

agent.channels.c2.type=memory

agent.sinks=k1 k2

agent.sinks.k1.type=hdfs

agent.sinks.k1.channel=c1

agent.sinks.k1.hdfs.path=/logs/exceptions/%Y%/%M%/%d%/%H%

agent.sinks.k2.type=avro

agent.sinks.k2.channel=c2

agent.sinks.k2.hostname=foo.example.com

agent.sinks.k2.port=12345

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值