大数据之Flume技术 (2)Flume事物以及内部原理
Flume事务
Flume是一个基于流式架构一个日志收集传输系统,内部流式处理框架如下图:
Put事务:
(1) doPut:负责将Source拿到得数据上传到临时缓冲区putList中
(2)doCommit:该过程会检查Channel队列得大小是否足够存储putList中得数据,如果空间足够大,则执行doCommit将数据传到Channael;
(3):doRollback:在步骤(2)当中,如果Channel队列得内存空间不足,则回滚数据;
Take事务:
(1) doTake:负责将数据从Channel里拉取到临时缓冲区takeList,并将数据发送到HDFS或者其他目的地(比如下一级Flume)
(2)doCommit:如果数据全部都发送成功得话,那么则清除临时缓冲区takeList里得数据;
(3):doRollback:如果在步骤(2)里发送过程中出现异常,则Rollback会将takeList中得数据归还给Channel;
Flume Agent内存原理
重要组件:
(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可以错误恢复(故障转移)的功能。