高级组件
- Source Interceptors:Source可以指定一个或者多个拦截器按先后顺序依次对采集到的数据进行处 理。
- Channel Selectors:Source发往多个Channel的策略设置,如果source后面接了多个channel,到 底是给所有的channel都发,还是根据规则发送到不同channel,这些是由Channel Selectors来控制 的
- Sink Processors:Sink 发送数据的策略设置,一个channel后面可以接多个sink,channel中的数据 是被哪个sink获取,这个是由Sink Processors控制的
事件
Event是Flume传输数据的基本单位,也是事务的基本单位,在文本文件中,通常一行记录就是一个Event
Event中包含header和body;
- body是采集到的那一行记录的原始内容
- header类型为Map,里面可以存储一些属性信息,方便后面使用
- 我们可以在Source中给每一条数据的header中增加key-value,然后在Channel和Sink中使用header的值
Source Interceptors
常见的有:Timestamp Interceptor、Host Interceptor、Search and Replace Interceptor 、Static Interceptor、Regex Extractor Interceptor
- Timestamp Interceptor:向event中的header里面添加timestamp 时间戳信息
- Host Interceptor:向event中的header里面添加host属性,host的值为当前机器的主机名或者ip
- Search and Replace Interceptor:根据指定的规则查询Event中body里面的数据,然后进行替换, 这个拦截器会修改event中body的值,也就是会修改原始采集到的数据内容
- Static Interceptor:向event中的header里面添加固定的key和value
- Regex Extractor Interceptor:根据指定的规则从Event中的body里面抽取数据,生成key和value, 再把key和value添加到header中
我们event中的header里面添加key-value类型的数据,方便后面的channel和sink组件使用,对采集到的原始数据内容没有任何影响。
Search and Replace Interceptor是会根据规则修改event中body里面的原始数据内容,对header没有任 何影响,使用这个拦截器需要特别小心,因为他会修改原始数据内容。