flume事务
flume传输流程
注释:
source收集数据有很多来源 也可以自己写代码监控实时 jdbc数据源
拦截器链作用:可以实现解耦 复用 灵活性高
一个source可以绑定多个channel ,所以一个事件具体给哪一个channel 就交给channel选择器
副本选择器 Rep 发给所有channel
多路选择器 Mul 需要指定绑定策略
#Replicating Channel Selector (default)
a1.sources = r1
a1.channels = c1 c2 c3
a1.sources.r1.selector.type = replicating
a1.sources.r1.channels = c1 c2 c3
a1.sources.r1.selector.optional = c3
#Multiplexing Channel Selector
a1.sources = r1
a1.channels = c1 c2 c3 c4
a1.sources.r1.selector.type = multiplexing
# header以前为空 现在需要结合拦截器一起用 所有将头中key添加为state
a1.sources.r1.selector.header = state
# value : CZ
a1.sources.r1.selector.mapping.CZ = c1
# value : US
a1.sources.r1.selector.mapping.US = c2 c3
# 没匹配上 c4
a1.sources.r1.selector.default = c4
sink
# Load balancing Sink Processor
a1.sinkgroups = g1
a1.sinkgroups.g1.sinks = k1 k2
a1.sinkgroups.g1.processor.type = load_balance
a1.sinkgroups.g1.processor.backoff = true
a1.sinkgroups.g1.processor.selector = random
flume拓扑结构
简单串联:
这种模式是将多个 flume 顺序连接起来了,从最初的 source 开始到最终 sink 传送的目的存储系统。此模式不建议桥接过多的 flume 数量,flume 数量过多不仅会影响传输速率,而且一旦传输过程中某个节点 flume 宕机,会影响整个传输系统。
复制和多路复用:
Flume 支持将事件流向一个或者多个目的地。这种模式可以将相同数据复制到多个channel 中,或者将不同数据分发到不同的 channel 中,sink 可以选择传送到不同的目的地。
负载均衡和故障转移:
Flume支持使用将多个sink逻辑上分到一个sink组,sink组配合不同的SinkProcessor可以实现负载均衡和错误恢复的功能。
聚合:
这种模式是我们最常见的,也非常实用,日常 web 应用通常分布在上百个服务器,大者甚至上千个、上万个服务器。产生的日志,处理起来也非常麻烦。用 flume 的这种组合方式能很好的解决这一问题,每台服务器部署一个 flume 采集日志,传送到一个集中收集日志的flume,再由此 flume 上传到 hdfs、hive、hbase 等,进行日志分析。