余老师带你学习大数据框架全栈第十二章Flume第八节简单案例之Flume进阶--Flume Agent 内部原理

4.2 Flume Agent 内部原理

在这里插入图片描述
1.source接收数据
2.封装事件,然后调用source里的channel processor获取channel。
3.将事件传递给拦截器(可有多个interceptor,形成拦截器链,实现拦截器的复用,更加灵活。拦截器与业务相关性高,那就尽量把条件写在一个里面。因为与业务相干性越高,提供复用的可能性越低。)
4.经过拦截器后又将数据返回,然后传给channel选择器。因为一个source可以绑定多个channel,如何绑定由channel选择器和选择策略控制。

Channel Selectors 有两 种 类 型 :
ReplicatingChannel Selector(副本channel选择器) (default)和Multiplexing ChannelSelector(多路channel选择器) 。Replicating会将source过来的events发往所有channel,而Multiplexing可 以配置发往哪些Channel。
ReplicatingChannel Selector:
在这里插入图片描述a1.sources.r1.selector.type = replicating 可以不写,因为是默认的

Multiplexing ChannelSelector:
在这里插入图片描述
在为添加header之前,里面是空的。因为要配合拦截器一起使用,所以要给这个事件加一个头(state),header的数据结构为map<key,value>,所以key为state,value为CZ,US。

拦截器和channel选择器都是在数据写入channel之前要完成的事情。
5.再将事件传回channel列表。
6.根据Channel选择器的选择结果,将事件写入相应channel。在5和6之间做put事务。
7.因为一个channel可以绑定多个sink,如何绑定由sink组决定。

SinkProcessor 共有三 种类型,分别是DefaultSinkProcessor(默认的sink组) 、LoadBalancingSinkProcessor(负载均衡的)和 FailoverSinkProcessor(故障转移的)。DefaultSinkProcessor对应的是单个的Sink ,没有组的概念。 LoadBalancingSinkProcessor 和 FailoverSinkProcessor 对应的是 Sink Group,LoadBalancingSinkProcessor 可以实现负载均衡的功能,FailoverSinkProcessor 可以实现故障转移的功能(有一个active,其他为standby)。
DefaultSinkProcessor
在这里插入图片描述

当channel和sink为一一对应的关系的时候可以不用写这个策略。

LoadBalancingSinkProcessor
在这里插入图片描述
Backoff:退避算法,默认是关闭的,要结合processor.selector.maxTimeOut(最大为30000s)
processor.selector:默认是round_robin轮巡,还有 random随机和用户自定义。
FailoverSinkProcessor
在这里插入图片描述
详细学习内容可观看Spark快速大数据处理扫一扫~~~或者引擎搜索Spark余海峰
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_45810046/article/details/113742330