目录
一、Flume事务
二、Flume Agent 内部原理
2.1、重要组件
2.1.1、ChannelSelector(选择器)
ChannelSelector 的作用就是选出 Event 将要被发往哪个 Channel。
(1)Replicating ChannelSelector(复制或副本):将同一个 Event 发往所有的 Channel。
(2)Multiplexing ChannelSelector(多路复用):根据相应的原则,将不同的 Event 发往不同的 Channel。
2.1.2、SinkProcessor(sink组)
(1)DefaultSinkProcessor:对应的是单个的 Sink.
(2)LoadBalancingSinkProcessor(负载均衡):假设一个channel绑定了多个sink,由于数据由sink主动拉取,首先由channel以轮询的方式询问sink有没有数据拉取,有即拉走。
(3)FailoverSinkProcessor(故障转移即高可用):假设一个channel绑定了多个sink,首先对多个sink配置优先级,优先级最高的sink先拉取数据,假设该sink在拉取数据的过程中挂掉了,则由第二个优先级高的sink拉取数据替代挂掉的sink工作。
三、Flume拓扑结构
3.1、简单串联
多个flume在端口出顺序连接,从最初的 source 开始到最终 sink 传送的目的存储系统。
此模式不建议桥接过多的 flume 数量, flume 数量过多不仅会影响传输速率,而且一旦传输过程中某个节点 flume 宕机,会影响整个传输系统。
3.2、复制和多路复用
Flume 支持将事件流向一个或者多个目的地。这种模式可以将相同数据复制到多个 channel 中,或者将不同数据分发到不同的 channel 中,sink 可以选择传送到不同的目的地
3.3、负载均衡和故障转移
Flume 支持使用将多个sink 逻辑上分到一个sink 组,sink 组配合不同的SinkProcessor可以实现负载均衡和错误恢复的功能。
3.4、聚合
最常用的模式,日常 web 应用通常分布在多个服务器,用 flume 的聚合方式,每台服务器部署一个 flume 采集日志,传送到一个集中收集日志的flume,再由此 flume 上传到 hdfs、hive、hbase 等,进行日志分析。