关于Flume中Chanel.Selector.header解释

flume内置的ChannelSelector有两种,分别是Replicating和Multiplexing。

Replicating类型的ChannelSelector会针对每一个Event,拷贝到所有的Channel中,这是默认的ChannelSelector。

replicating类型的ChannelSelector例子如下

 1 a1.sources = r1
 2 a1.channels = c1 c2 # 如果有100个Event,那么c1和c2中都会有这100个事件
 3
 4 a1.channels.c1.type = memory
 5 a1.channels.c1.capacity = 1000
 6 a1.channels.c1.transactionCapacity = 100
 7
 8
 9 a1.channels.c2.type = memory
10 a1.channels.c2.capacity = 1000
11 a1.channels.c2.transactionCapacity = 100

Multiplexing类型的ChannelSelector会根据Event中Header中的某个属性决定分发到哪个Channel。

multiplexing类型的ChannelSelector例子如下:

1 a1.sources = r1
2
3 a1.sources.source1.selector.type = multiplexing
4 a1.sources.source1.selector.header = validation # 以header中的validation对应的值作为条件
5 a1.sources.source1.selector.mapping.SUCCESS = c2 # 如果header中validation的值为SUCCESS,使用c2这个channel
6 a1.sources.source1.selector.mapping.FAIL = c1 # 如果header中validation的值为FAIL,使用c1这个channel
7 a1.sources.source1.selector.default = c1 # 默认使用c1这个channel
a1.sources.source1.selector.header = validation # 以header中的validation对应的值作为条件

同理,如下conf文件:
 1 # example.conf: A single-node Flume configuration
 2
 3 # Name the components on this agent
 4 a1.sources = r1
 5 a1.sinks = k1
 6 a1.channels = c1
 7
 8 # Describe/configure the source
 9 a1.sources.r1.type = netcat
10 a1.sources.r1.bind = localhost
11 a1.sources.r1.port = 44444
12
13 a1.sources.r1.interceptors = i1
14 a1.sources.r1.interceptors.i1.type = regex_extractor
15 a1.sources.r1.interceptors.i1.regex = (\\d):(\\d):(\\d)
16 a1.sources.r1.interceptors.i1.serializers = s1 s2 s3
17 a1.sources.r1.interceptors.i1.serializers.s1.name = ip
18 a1.sources.r1.interceptors.i1.serializers.s2.name = domain
19 a1.sources.r1.interceptors.i1.serializers.s3.name = course
20
21 a1.sources.r1.selector.type = multiplexing
22 a1.sources.r1.selector.header = course
23 a1.sources.r1.selector.default = c1
24
25 # Describe the sink
26 a1.sinks.k1.type = logger
27
28 # Use a channel which buffers events in memory
29 a1.channels.c1.type = memory
30 a1.channels.c1.capacity = 1000
31 a1.channels.c1.transactionCapacity = 100
32
33 # Bind the source and sink to the channel
34 a1.sources.r1.channels = c1
35 a1.sinks.k1.channel = c1

source r1中的头部有IP、Domain和cource三种信息,而r1的selector.header = course,表示selector只对IP,Domain和Cource中的Cource进行判断选择,然后再划分channel。

时间: 2024-10-08 08:55:10

关于Flume中Chanel.Selector.header解释的相关文章

【Flume】【源码分析】flume中事件Event的数据结构分析以及Event分流

前言 首先来看一下flume官网中对Event的定义 一行文本内容会被反序列化成一个event[序列化是将对象状态转换为可保持或传输的格式的过程.与序列化相对的是反序列化,它将流转换为对象.这两个过程结合起来,可以轻松地存储和传输数据],event的最大定义为2048字节,超过,则会切割,剩下的会被放到下一个event中,默认编码是UTF-8,这都是统一的. 但是这个解释是针对Avro反序列化系统中的Event的定义,而flume ng中很多event用的不是这个,所以你只要记住event的数据

flume中Source

Spooling Directory Source: 以下2组参数解释: fileHeader及fileHeaderKey:fileHeader是个布尔值,可配置为true或者false,表示在flume读取数据之后,是否在封装出来的event中将文件名添加到event的header中.fileHeaderKey表示,如果event中有了header(当fileHeader配置为true)时,header中存储文件名的<key,value>中,key命名是什么.比如,如果将fileHeader

epoll 浅析以及 nio 中的 Selector

首先介绍下epoll的基本原理,网上有很多版本,这里选择一个个人觉得相对清晰的讲解(详情见reference): 首先我们来定义流的概念,一个流可以是文件,socket,pipe等等可以进行I/O操作的内核对象. 不管是文件,还是套接字,还是管道,我们都可以把他们看作流. 之后我们来讨论I/O的操作,通过read,我们可以从流中读入数据:通过write,我们可以往流写入数据.现在假定一个情形,我们需要从流中读数据,但是流中还没有数据,(典型的例子为,客户端要从socket读如数据,但是服务器还没

Http传输Header解释

response header: Date 服务器端时间Server 服务器端的服务器软件 Apache/2.2.6Etag 文件标识符Content-Encoding传送启用了GZIP压缩 gzipContent-Length 内容长度Content-Type 内容类型 请求Header(HTTP request header ):Host 请求的域名User-Agent 浏览器端浏览器型号和版本Accept 可接受的内容类型Accept-Language 语言Accept-Encoding

【Flume】flume中拦截器的源码分析,以TimestampInterceptor为例

本文将以TimestampInterceptor为例来分析一下flume中拦截器的工作原理 首先来看下改拦截器的实现结构 1.实现了Interceptor接口 该接口的方法定义如下: public void initialize(); public Event intercept(Event event); public List<Event> intercept(List<Event> events); public void close(); /** Builder imple

关于Linux系统安装中Swap分区的解释

Swap分区,即交换区,Swap空间的作用可简单描述为:当系统的物理内存不够用的时候,就需要将物理内存中的一部分空间释放出来,以供当前运行 的程序使用.那些被释放的空间可能来自一些很长时间没有什么操作的程序,这些被释放的空间被临时保存到Swap空间中,等到那些程序要运行时,再从 Swap中恢复保存的数据到内存中.这样,系统总是在物理内存不够时,才进行Swap交换.其实,Swap的调整对Linux服务器,特别是Web服务器 的性能至关重要.通过调整Swap,有时可以越过系统性能瓶颈,节省系统升级费

android中drawable资源的解释及例子

文章中的内容参考Dev Guide中的Drawable Resources,英文好的朋友可以直接去读英文.总结这篇文章的目的是自己在使用drawable资源遇到一些问题跟大家分享下,同时整理下自己对drawable的理解. drawable资源共有10种,包括Bitmap文件.Nine-Path文件.Layer List.State List.Level list.Transition Drawable.Inset Drawable.Clip Drawable.Scale Drawable.Sh

epoll浅析以及nio中的Selector

出处: https://my.oschina.net/hosee/blog/730598 首先介绍下epoll的基本原理,网上有很多版本,这里选择一个个人觉得相对清晰的讲解(详情见reference): 首先我们来定义流的概念,一个流可以是文件,socket,pipe等等可以进行I/O操作的内核对象. 不管是文件,还是套接字,还是管道,我们都可以把他们看作流. 之后我们来讨论I/O的操作,通过read,我们可以从流中读入数据:通过write,我们可以往流写入数据.现在假定一个情形,我们需要从流中

【Flume】flume中transactionCapacity和batchSize概念的具体分析和解惑

不知道各位用过flume的读者对这两个概念是否熟悉了解 一开始本人的确有点迷惑,觉得这是不是重复了啊? 没感觉到transactionCapacity的作用啊? batchSize又是干啥的啊? -- -- 带着这些问题,我们深入源码来看一下: batchSize batchSize这个概念首先它出现在哪里呢? kafkaSink的process方法 HDFS Sink Exec Source 通过上面这三张图,相信大家应该知道batchSize从哪来的了 batchSize是针对Source和