Flume的可靠性保证:故障转移、负载均衡
2016-04-16 00:33
316 查看
官网的配置 : https://flume.apache.org/FlumeUserGuide.html
Flume的一些组件(如Spooling Directory Source、File Channel)能够保证agent挂掉后不丢失数据。
source里的event流经channel,进入sink组,在sink组内部根据负载算法(round_robin、random)选择sink,后续可以选择不同机器上的agent实现负载均衡。
配置如下:
2)Load balancing Log4J Appender
不同的agent处理同一个client产生的数据。
配置一组sink,这组sink组成一个Failover Sink Processor,当有一个sink处理失败,Flume将这个sink放到一个地方,等待冷却时间,可以正常处理event时再拿回来。
event通过通过一个channel流向一个sink组,在sink组内部根据优先级选择具体的sink,一个失败后再转向另一个sink,流程图如下:
Flume的一些组件(如Spooling Directory Source、File Channel)能够保证agent挂掉后不丢失数据。
1、负载均衡
1)Load balancing Sink Processorsource里的event流经channel,进入sink组,在sink组内部根据负载算法(round_robin、random)选择sink,后续可以选择不同机器上的agent实现负载均衡。
配置如下:
# Name the components on this agent a1.sources = r1 a1.sinks = k1 k2 a1.channels = c1 # Describe/configure the source a1.sources.r1.type = exec a1.sources.r1.channels=c1 a1.sources.r1.command=tail -F /home/flume/xx.log #define sinkgroups 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=round_robin #define the sink 1 a1.sinks.k1.type=avro a1.sinks.k1.hostname=192.168.1.112 a1.sinks.k1.port=9876 #define the sink 2 a1.sinks.k2.type=avro a1.sinks.k2.hostname=192.168.1.113 a1.sinks.k2.port=9876 # Use a channel which buffers events in memory a1.channels.c1.type = memory a1.channels.c1.capacity = 1000 a1.channels.c1.transactionCapacity = 100 # Bind the source and sink to the channel a1.sources.r1.channels = c1 a1.sinks.k1.channel = c1 a1.sinks.k2.channel=c1
2)Load balancing Log4J Appender
不同的agent处理同一个client产生的数据。
log4j.rootLogger=INFO,flume log4j.appender.flume = org.apache.flume.clients.log4jappender.LoadBalancingLog4jAppender log4j.appender.flume.Hosts = 192.168.1.111:41414 192.168.1.111:41414
2、故障转移
Failover Sink Processor配置一组sink,这组sink组成一个Failover Sink Processor,当有一个sink处理失败,Flume将这个sink放到一个地方,等待冷却时间,可以正常处理event时再拿回来。
event通过通过一个channel流向一个sink组,在sink组内部根据优先级选择具体的sink,一个失败后再转向另一个sink,流程图如下:
# Name the components on this agent a1.sources = r1 a1.sinks = k1 k2 a1.channels = c1 # Describe/configure the source a1.sources.r1.type = exec a1.sources.r1.channels=c1 a1.sources.r1.command=tail -F /home/flume/xx.log #define sinkgroups a1.sinkgroups=g1 a1.sinkgroups.g1.sinks=k1 k2 a1.sinkgroups.g1.processor.type=failover a1.sinkgroups.g1.processor.priority.k1=10 a1.sinkgroups.g1.processor.priority.k2=5 a1.sinkgroups.g1.processor.maxpenalty=10000 #define the sink 1 a1.sinks.k1.type=avro a1.sinks.k1.hostname=192.168.1.112 a1.sinks.k1.port=9876 #define the sink 2 a1.sinks.k2.type=avro a1.sinks.k2.hostname=192.168.1.113 a1.sinks.k2.port=9876 # Use a channel which buffers events in memory a1.channels.c1.type = memory a1.channels.c1.capacity = 1000 a1.channels.c1.transactionCapacity = 100 # Bind the source and sink to the channel a1.sources.r1.channels = c1 a1.sinks.k1.channel = c1 a1.sinks.k2.channel=c1
备注:
在Sink中的两个数据为优先级设置默认为5,数字越大越优先a1.sinkgroups.g1.processor.priority.k1=10 a1.sinkgroups.g1.processor.priority.k2=5
相关文章推荐
- codevs 1078 最小生成树 kruskal
- VijosP1180:选课
- IntelliJ IDEA 使用心得与常用快捷键
- java并发的线程安全单例模式
- Hibernate学习总结:OneToOne双向外键关联
- Error:Configuration with name 'default' not found. 解决办法
- [POJ 3276] Face The Right Way (翻转问题+技巧)
- 实例26直接交换两个数的值
- (LeetCode 191) Number of 1 Bits
- 用Python3下载网页图片
- CLM研究
- 【皇甫】☀内侧小解析---小行动(1)
- 安装.NET Framework进度条卡住不动的解决方案
- HDU 4622 Reincarnation 后缀自动机
- Intent详解
- activity与fragment通信汇总
- Flume:本地文件到Kafka
- 292.[LeetCode]Nim Game
- Mybatis学习记录(三)--Mybatis配置文件详解
- 想追她?先算算你要等多久