1.flume基础组件的使用
2.flume事务
2.1事务原理
put事务流程:
doPut:将批处理的数据先写入putList中。
doCommit:检查channel内存队列是否足够合并。
doRollback:channel内存队列空间不足,回滚数据。
take事务流程:
doTake:将数据拉取到临时缓冲区takeList,并将数据发送到指定目的地。
doCommit:如果数据全部发送成功就清理临时缓冲区takeList。
doRollback:数据发送过程中如果出现异常,rollback将临时缓冲区takeList中的数据归还给channel内存队列。
注:从Source批处理的数据经过doPut先存放在putList中,doCommit去检查channel中是否有空间,如果有直接推送给channel,如果没有就回滚数据到putList。channel中存放着一个个的event,doTake主动拉取channel中的数据经过takeList直接往sink中发送,在经过takeList时保留有副本在takeList中,在doCommit发送过程中如果所有的数据都发送成功就清理掉takeList中的数据,如果出现异常就交由doRollback将takeList中的数据回滚到channel内存队列(直接吐回到channel而不是仅仅存留在takeList中)。
3.Flume Agent内部原理
3.1重要组件
1)ChannelSelector
ChannelSelector 的作用就是选出 Event 将要被发往哪个 Channel。其共有两种类型,
分别是 Replicating(复制)和 Multiplexing(多路复用)。
ReplicatingSelector 会将同一个 Event 发往所有的 Channel,Multiplexing 会根据相
应的原则,将不同的 Event 发往不同的 Channel。
2)SinkProcessor
SinkProcessor 共 有 三 种 类 型 , 分 别 是 DefaultSinkProcessor 、LoadBalancingSinkProcessor 和 FailoverSinkProcessor
DefaultSinkProcessor 对 应 的 是 单 个 的 Sink , LoadBalancingSinkProcessor 和
FailoverSinkProcessor 对应的是 Sink Group,LoadBalancingSinkProcessor 可以实现负
载均衡的功能,FailoverSinkProcessor 可以错误恢复的功能。