一、Flume Selector
1. Selector概述
- Selector即Flume中的选择器,主要用在实现扇出过程中实现按照指定方式分发数据。
- 选择器的工作模式: 复制 和 多路复用(路由)模式
- 默认情况下,不配置Selector,则扇出采用复制机制。
2. Selector实现复制
- 不配置Selector,默认在扇出时就是复制方式。
也可以显示进行配置:
3. Selector实现多路复用(multiplexing)
可以手动配置Selector,并将其设置为多路复用模式,实现在扇出的过程中按照指定规则分发数据
配置方式:
案例
配置Hadoop01
配置Hadoop02,Hadoop03
二、Flume Interceptor
1. Interceptor概述
- 拦截器可以拦截Event,允许或不允许Event通过,或在允许通过的时,改变Event内容,这种改变包括改变Event的体或头信息。
- 拦截器可以手动开发,只要实现org.apache.flume.interceptor.Interceptor接口,在其中编写拦截规则即可。
- Flume也内置了很多拦截器,可以直接使用。
- 可以同时配置多 个拦截器,依次拦截Event处理,即,采用了责任链模式。
2. Timestamp Interceptor
时间戳拦截器,拦截到Event后,允许通过,但在头信息中增加时间戳头信息。
案例
3. Host Interceptor
主机名拦截器,拦截下Event后,允许通过,但在头信息中增加主机名或IP头信息。
4. Static Interceptor
静态拦截器,拦截下Event之后,允许通过,但要增加上指定的头和值。
案例
5. UUID Interceptor
UUID拦截器,拦截下Event之后,允许通过,但要在头上增加上一个UUID唯一表示作为头。
案例
6. Search and Replace Interceptor
搜索和替换拦截器,拦截下Event后,通过正则匹配日志中的体,将符合正则的部分替换为指定的内容。
案例
7. Regex Filtering Interceptor
正则过滤拦截器,拦截下Event之后,利用正则匹配日志的体,根据是否匹配决定是否保留或是否取出当前Event。
案例
8. Regex Extractor Interceptor
正则提取拦截器,拦截下Event后,根据正则匹配日志体中的部分内容,加入到头中用指定的名称作为键。
三、Flume Processor
1. Processor概述
- Processor是Flume用于实现失败恢复和负载均衡的组件。
- 在企业级开发中,通常有多个客户端Agent来收集数据,发送给中心服务器Agent,中心服务器Agent要承载若干客户端Agent发送的数据,负载较高,且中心服务器Agent如果只有一个,会造成单节点故障风险。
- 所以在企业级开发中,中心服务器Agent往往不止一个,由若干个协同工作,此时客户端Agent如何分配数据给中心服务器Agent就成了问题。
- 需要为多个中心服务器配置Sink,将这些Sink组成SinkGroup组,再为这个组配置Processor,指定处理机制和其他参数。
- 之后将这些Sink连接到同一个Channel,Processor可以通过改变Channel的指向,将数据根据规则实现分发。
- processor的工作模式:失败恢复 和 负载均衡两种模式。
2. Processor的失败恢复机制
- 失败恢复机制下,Processor将会维护一个sink的优先表。sink可以被配置一个优先级,数字越大优先级越高。
- 事件将永远将只会发往优先级最高的Sink。只要有一个Sink存活,整个过程仍然可以进行。
- 如果没有指定优先级,则优先级顺序取决于sink的配置顺序,先配置的默认优先级高于后配置的。
案例
配置Hadoop01
配置Hadoop02,Hadoop03
3. Processor的负载均衡机制
- Processor的负载均衡机制提供了在多个sink之间实现负载均衡的能力。
- 它维护了一个活动sink的索引列表。
- 通过Processor动态切换channel在SinkGroup中对Sink的指向,实现数据的负载均衡方式分发。
- 支持轮询 或 随机方式的负载均衡,默认值是轮询方式,可以通过配置指定。
- 负载均衡模式下,如果某个中心服务器宕机,则Processor会将该中心服务器Sink剔除SinkGroup组,并将之前发送失败的数据发给其他仍然存活的Sink,所以可以认为Processor的负载均衡机制自带失败恢复的能力。
案例
配置Hadoop01
配置Hadoop02,Hadoop03