一、Flume Selector

1. Selector概述

  1. Selector即Flume中的选择器,主要用在实现扇出过程中实现按照指定方式分发数据。
  2. 选择器的工作模式: 复制 和 多路复用(路由)模式
  3. 默认情况下,不配置Selector,则扇出采用复制机制。

2. Selector实现复制

  1. 不配置Selector,默认在扇出时就是复制方式。
    也可以显示进行配置:

3. Selector实现多路复用(multiplexing)

可以手动配置Selector,并将其设置为多路复用模式,实现在扇出的过程中按照指定规则分发数据

flume agent三个核心组件 flume三大组件_Flume Interceptor


配置方式:

flume agent三个核心组件 flume三大组件_flume agent三个核心组件_02

案例

flume agent三个核心组件 flume三大组件_Flume Interceptor_03


配置Hadoop01

flume agent三个核心组件 flume三大组件_flume agent三个核心组件_04


配置Hadoop02,Hadoop03

flume agent三个核心组件 flume三大组件_Flume Processor_05

二、Flume Interceptor

1. Interceptor概述

  1. 拦截器可以拦截Event,允许或不允许Event通过,或在允许通过的时,改变Event内容,这种改变包括改变Event的体或头信息。
  2. 拦截器可以手动开发,只要实现org.apache.flume.interceptor.Interceptor接口,在其中编写拦截规则即可。
  3. Flume也内置了很多拦截器,可以直接使用。
  4. 可以同时配置多 个拦截器,依次拦截Event处理,即,采用了责任链模式。

2. Timestamp Interceptor

时间戳拦截器,拦截到Event后,允许通过,但在头信息中增加时间戳头信息。

flume agent三个核心组件 flume三大组件_Flume Interceptor_06


flume agent三个核心组件 flume三大组件_flume agent三个核心组件_07

案例

flume agent三个核心组件 flume三大组件_flume agent三个核心组件_08

3. Host Interceptor

主机名拦截器,拦截下Event后,允许通过,但在头信息中增加主机名或IP头信息。

flume agent三个核心组件 flume三大组件_Flume Interceptor_09

flume agent三个核心组件 flume三大组件_Flume Processor_10

4. Static Interceptor

静态拦截器,拦截下Event之后,允许通过,但要增加上指定的头和值。

flume agent三个核心组件 flume三大组件_Flume Interceptor_11

flume agent三个核心组件 flume三大组件_Flume Interceptor_12

案例

flume agent三个核心组件 flume三大组件_flume agent三个核心组件_13

5. UUID Interceptor

UUID拦截器,拦截下Event之后,允许通过,但要在头上增加上一个UUID唯一表示作为头。

flume agent三个核心组件 flume三大组件_Flume Interceptor_14


案例

flume agent三个核心组件 flume三大组件_拦截器_15

6. Search and Replace Interceptor

搜索和替换拦截器,拦截下Event后,通过正则匹配日志中的体,将符合正则的部分替换为指定的内容。

flume agent三个核心组件 flume三大组件_flume agent三个核心组件_16


案例

flume agent三个核心组件 flume三大组件_拦截器_17

7. Regex Filtering Interceptor

正则过滤拦截器,拦截下Event之后,利用正则匹配日志的体,根据是否匹配决定是否保留或是否取出当前Event。

flume agent三个核心组件 flume三大组件_flume agent三个核心组件_18


案例

flume agent三个核心组件 flume三大组件_Flume Processor_19

8. Regex Extractor Interceptor

正则提取拦截器,拦截下Event后,根据正则匹配日志体中的部分内容,加入到头中用指定的名称作为键。

三、Flume Processor

1. Processor概述

  1. Processor是Flume用于实现失败恢复负载均衡的组件。
  2. 在企业级开发中,通常有多个客户端Agent来收集数据,发送给中心服务器Agent,中心服务器Agent要承载若干客户端Agent发送的数据,负载较高,且中心服务器Agent如果只有一个,会造成单节点故障风险。
  3. 所以在企业级开发中,中心服务器Agent往往不止一个,由若干个协同工作,此时客户端Agent如何分配数据给中心服务器Agent就成了问题。
  4. 需要为多个中心服务器配置Sink,将这些Sink组成SinkGroup组,再为这个组配置Processor,指定处理机制和其他参数。
  5. 之后将这些Sink连接到同一个Channel,Processor可以通过改变Channel的指向,将数据根据规则实现分发。
  6. processor的工作模式:失败恢复 和 负载均衡两种模式。

2. Processor的失败恢复机制

  1. 失败恢复机制下,Processor将会维护一个sink的优先表。sink可以被配置一个优先级,数字越大优先级越高。
  2. 事件将永远将只会发往优先级最高的Sink。只要有一个Sink存活,整个过程仍然可以进行。
  3. 如果没有指定优先级,则优先级顺序取决于sink的配置顺序,先配置的默认优先级高于后配置的。

案例

配置Hadoop01

flume agent三个核心组件 flume三大组件_Flume Interceptor_20


配置Hadoop02,Hadoop03

flume agent三个核心组件 flume三大组件_拦截器_21

3. Processor的负载均衡机制

  1. Processor的负载均衡机制提供了在多个sink之间实现负载均衡的能力。
  2. 它维护了一个活动sink的索引列表。
  3. 通过Processor动态切换channel在SinkGroup中对Sink的指向,实现数据的负载均衡方式分发。
  4. 支持轮询 或 随机方式的负载均衡,默认值是轮询方式,可以通过配置指定。
  5. 负载均衡模式下,如果某个中心服务器宕机,则Processor会将该中心服务器Sink剔除SinkGroup组,并将之前发送失败的数据发给其他仍然存活的Sink,所以可以认为Processor的负载均衡机制自带失败恢复的能力。

案例

配置Hadoop01

flume agent三个核心组件 flume三大组件_Flume Selector_22


配置Hadoop02,Hadoop03

flume agent三个核心组件 flume三大组件_拦截器_23