天天看点

Flume Sink Processor

SinkGroup允许组织多个sink到一个实体上。SinkProcessors 能够提供在组内所有sink之间实现负载均衡的能力。而且在失败的情况下能够进行故障转移。

sinks: 空格分隔的多个sink

processor.type:default|failover|load_balance

一 DefaultSink Processor

只允许接收单个sink,不强制用户为sink创建processor.

二FailoverSink Processor

它维护着一个sink的优先级列表,保证event只要有效就会被处理。

failover机制工作原理把失败的sinks放到一个池里,然后给他分配一个冷冻期。一旦一个event被成功发送,重新会把这个sink放入live池子里。

对于这个配置,我们要设置sinkgroups processor为failover,为每一个单独的sink设置优先级,另外failover的上限可以通过maxpenalty属性设置。

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

三Loadbalancing Sink Processor

LoadBalancing Sink Processor 提供另一种可以在多个sink之间平衡负载的能力。

实现支持通过round_robin(轮询)或者random(随机)参数来实现负载分发,默认情况下使用round_robin。

processor.sinks:多个空格分割的sink

processor.type:load_balance

processor.backoff:

processor.selector:round_robin|random|继承AbstractSinkSelector的类

processor.selector.maxTimeOut:

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