Flume之Failover和Load balancing原理及实例

本文详细介绍了Flume的Failover Sink Processor和Load balancing Sink Processor的工作原理及配置实例。通过具体测试展示了如何配置Failover和Load balancing,解释了配置顺序对效果的影响,并给出了在实际使用中需要注意的事项,如避免优先级冲突和理解SinkGroup的加载顺序。
摘要由CSDN通过智能技术生成

Failover Sink Processor

Failover Sink Processor维护了一个sink的优先级列表,具有故障转移的功能,具体的配置如下(加粗的必须配置):

属性名称 默认值 描述
sinks 多个sink用空格分开。
processor.type default 组件的名称,必须是:failover
processor.priority.<sinkName> 优先级值。<sinkName> 必须是sinks中有定义的。优先级值高Sink会更早被激活。值越大,优先级越高。
:多个sinks的话,优先级的值不要相同,如果优先级相同的话,只会有一个生效。且failover时,同优先级的不会Failover,就算是同优先级的还存在也会报All sinks failed to process。
processor.maxpenalty 30000 失败的Sink最大的退避时间(单位:毫秒)(退避算法(退避算法为我们在解决重试某项任务的时候,提供了一个比较好的等待思想。),参考:http://qiuqiang1985.iteye.com/blog/1513049

示例:

a1.sinkgroups = g1
a1.sinkgroups.g1.sinks = k1 k2
a1.sinkgroups.g1.processor.type = failover
a1.sinkgroups.g1.processor.priority.k1 = 5
a1.sinkgroups.g1.processor.priority.k2 = 10
a1.sinkgroups.g1.processor.maxpenalty = 10000

Load balancing Sink Processor

Load balancing sink processor 提供了多个sinks负载均衡的能力。它维护了一个active sinks列表,该列表中的负载必须是分布式的。实现了round_robin(轮询调度) 或者 random(随机) 的选择机制,默认是:round_robin(轮询调度)。也可以通过继承AbstractSinkSelector类来实现自定义的选择机制。
当被调用时,选择器根据配置文件的选择机制挑选下一个sink,并且调用该sink。如果所选的Sink传递Event失败,则通过选择机制挑选下一个可用的Sink,以此类推。

属性名称 默认 描述
processor.sinks 多个sink用空格分开。
processor.type default 组件的名称,必须是:load_balance
processor.backoff false 是否以指数的形式退避失败的Sinks。
processor.selector round_robin 选择机制。必须是round_robin, random 或者自定义的类,该类继承了AbstractSinkSelector
processor.selector.maxTimeOut 30000 默认是30000毫秒,屏蔽故障sink的时间

示例:

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

Failover和Load balancing实例

测试环境:

10.0.1.76(Client)

10.0.1.68 (Failover和Load balancing)

10.0.1.70

10.0.1.77

10.0.1.85

10.0.1.86

10.0.1.87

以10.0.1.76作为客户端,通过exec获取nginx的日志信息,然后将数据传到10.0.1.68(配置了Failover和Load balancing)的节点,最后10.0.1.68将数据发送的10.0.1.70,77,85,86,87节点,这些节点最终将数据写到本地硬盘。

10.0.1.76的配置:

[java]  view plain  copy
  1. a1.channels.c1.type = memory  
  2. a1.channels.c1.capacity = 1000  
  3. a1.channels.c1.transactionCapacity = 100  
  4.         
  5. a1.sources.r1.channels = c1  
  6. a1.sources.r1.type = exec  
  7. a1.sources.r1.command = tail -n 0 -F /home/nginx/logs/access.log   
  8.   
  9. a1.sinks.k1.type = avro  
  10. a1.sinks.k1.channel = c1  
  11. a1.sinks.k1.hostname = 10.0.1.68  
  12. a1.sinks.k1.port = 41415  
  13.   
  14. a1.channels = c1  
  15. a1.sources = r1  
  16. a1.sinks = k1  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值