Flume 进阶

一、flume事务

file

put事务流程

1、doPut

将批量数据先写入临时缓冲区putList

2、doCommit

检查Channel内存队列是否足够,

(1)达到一定时间没有数据写入到putList

(2)达到了putListCapcity容量

3、doRollback

Channel内存队列空间不足,回滚数据到putList,会被channel打回来

take事务流程:

1、doTake

将数据取到临时缓冲区takeList,并将数据发送到HDFS

2、doCommit

如果数据全部发送成功,则清除临时缓冲区takeList

3、doRollback

数据发送过程中如果出现异常,rollback将临时缓冲区takeList中数据全部打回给Channel内存队列

二、Flume Agent内部原理

file

重要组件:
1)ChannelSelector
ChannelSelector的作用就是选出event将要被发往哪个Channel。

共有两种类型:Replicating(复制)和Multiplexing(多路复用)

ReplicatingSelector会将同一个event发往所有的Channel

MultiplexingSelector会根据相应的原则,将不同的event发往不同的Channel

2)SinkProcessor
sinkProcessor共有三种类型:DefaultSinkProcessor、LoadBalancingProcessor和FailoverSinkProcessor

DefaultSinkProcessor:对应的是单个sink

LoadBalancingProcessor:对应的是sink group,可以实现负载均衡

FailoverSinkProcessor:对应的是sink group,可以实现故障恢复

三、flume拓扑结构

1、简单串联

file

将多个flume顺序连接起来,从最初的Source开始到最终sink传送的目的存储系统。

此模式不建议桥接过多的flume数量,flume数据过多不仅会影响传输速率,而且一旦传输过程中某个节点flume宕机,会影响整个传输系统

2、复制和多路复用

file

flume支持将事件流向一个或者多个目的地。

这种模式可以将相同数据复制到多个Channel中,或者将不同数据分发到不同的Channel中,sink可以选择传送到不同的目的地

3、负载均衡和故障转移

file

flume支持使用将多个sink逻辑上分到一个sink组,sink组配合不同的sinkProcessor可以实现负载均衡和错误恢复的功能

4、聚合

file

这种模式是我们最常见的,也非常实用,日常web应用通常分布在上百个服务器,大者甚至上千个、上万个服务器。产生的日志,处理  起来也非常麻烦。

用flume的这种组合方式能很好的解决这一问题,每台服务器部署一个flume采集日志,传送到一个集中收集日志的flume,再由此flume  上传到hdfs、hive、hbase等,进行日志分析。

Views: 140

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注