大数据之Flume技术 (2)Flume事物以及内部原理

Flume事务

 Flume是一个基于流式架构一个日志收集传输系统,内部流式处理框架如下图:
大数据之Flume技术 (2)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内存原理

大数据之Flume技术 (2)Flume事物以及内部原理
重要组件:

(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可以错误恢复(故障转移)的功能。