0
点赞
收藏
分享

微信扫一扫

任务18:18_Flume高级_传输详细流程


谈谈数据的真正走向。

任务18:18_Flume高级_传输详细流程_选择器


任务18:18_Flume高级_传输详细流程_选择器_02


在source里面去调用channel processor进程去处理这个事件。

第三步,将数据传给了拦截器

任务18:18_Flume高级_传输详细流程_拦截器_03


可以配置多个拦截器,形成一个拦截器链。

多个拦截器和一个拦截器的区别:

一个拦截器固然效率高,但是生产环境中采用多个,因为更加灵活,扩展性更好。拦截器和业务相关性越高,就用一个拦截器,因为它提供复用的可能性就很低。经过拦截器链之后,又会把数据返回给channel processor.

任务18:18_Flume高级_传输详细流程_flume_04


然后数据从channel processor中传给channel selector选择器,

经过拦截器链之后,数据处理完之后,经过事务,需要将数据传给channel了,但是source可以绑定多个channel,那么,数据需要传给哪个channel呢?这时候就需要channel选择器。

任务18:18_Flume高级_传输详细流程_flume_05


之前的所有案例都是source和channel都是一一对应的,所以这个没体会。

当一个source对应多个channel的时候,就一定要配置一个channel选择器。而且还要配置选择策略。

两大策略:

任务18:18_Flume高级_传输详细流程_flume_06


副本channel选择器:会给数据给到所有的channel都

多路复用channel 选择器:需要筛选了,配置的东西比副本多。

绑定了五个channle,不一定全部给。看自己的配置。配置很灵活。后面有专门的案例。

事件给到channel选择器之后,相当于给事件打上了一个标记,将来事件到哪,就根据标记来,

任务18:18_Flume高级_传输详细流程_flume_07


接下来又把数据给到了channel了,就真的将数据写到channel了

任务18:18_Flume高级_传输详细流程_flume_08


这时候数据就到了channel了。

所以,在数据到达channel之前,有拦截器和选择器interceptor和selector

这就是source ----> channel数据的流向:

任务18:18_Flume高级_传输详细流程_数据_09


这个过程,put事务在哪呢?

任务18:18_Flume高级_传输详细流程_数据_10

接下来就是channel — sink打交道:

任务18:18_Flume高级_传输详细流程_flume_11


一个channel可以绑定多个sink

任务18:18_Flume高级_传输详细流程_数据_12


如果channel1绑定了 sink1 2 3,

问:当前的数据是给sink1还是2,,还是3呢???

这里就出现了sink 组了

任务18:18_Flume高级_传输详细流程_选择器_13


默认sink组:只接收一个sink

LoadBalancingsink:负载均衡,防止某个压力过大

FailoverSink:故障转移:有一个是active,其他的做好准备,如果那个挂掉了,就赶紧顶上去。做替换

任务18:18_Flume高级_传输详细流程_拦截器_14


channel选择器的种类:

一、复制选择器

任务18:18_Flume高级_传输详细流程_flume_15


任务18:18_Flume高级_传输详细流程_flume_16


二、多路复用选择器、

任务18:18_Flume高级_传输详细流程_数据_17


任务18:18_Flume高级_传输详细流程_选择器_18


header=state

mapping.CZ=c1

mapping.US=c2 c3

default=c4

这些都是啥意思??

之前的好多source的header都是空的

header=state
多路复用需要和拦截器一块使用,之前用的好多source的header没有东西,但是现在需要给事件加一个头,添加state。
header的数据结构是map KV形式
它的K=state,value=???
整个事件有haeder,有body,body里面就是数据。
所以vlaue应该是 CZ或者US
如果你的value=CZ,就将数据传到c1
如果你的value=US,就将数据传到c2 c3
没匹配上,或者没有添加整个头,就使用default,将数据传输到c4
因为要添加头信息,所以,多路复用选择器,需要配合拦截器使用。

三、sink组:

1、默认

任务18:18_Flume高级_传输详细流程_选择器_19


任务18:18_Flume高级_传输详细流程_拦截器_20


如果当前channel和sink是一一对应关系的时候,不用写,是默认的

2、故障转移:

任务18:18_Flume高级_传输详细流程_flume_21


任务18:18_Flume高级_传输详细流程_数据_22


3、负载均衡:

任务18:18_Flume高级_传输详细流程_数据_23


任务18:18_Flume高级_传输详细流程_拦截器_24


任务18:18_Flume高级_传输详细流程_选择器_25


任务18:18_Flume高级_传输详细流程_数据_26


backoff:是退避算法。

任务18:18_Flume高级_传输详细流程_拦截器_27


默认是关闭的,但是我们需要开启的。等待时间呈指数增长,最大值是30s等待时间呈指数增长,防止最后等待时间会变得很长,所以设置一个30s,这样以后就是每隔30s向他发送一次数据,看它有没有活过来

任务18:18_Flume高级_传输详细流程_拦截器_28


30s过后,再发给你,如果你还收不到,再等30s,30s之后再发。

任务18:18_Flume高级_传输详细流程_flume_29


举报

相关推荐

0 条评论