Flume容错和负载均衡 Flume Sink Processors
? Flume ?    2016-05-24 22:04:31    2222    0    0
holynull   ? Flume ?

Flume Sink Processors

    Sink groups允许用户在一个代理中对多个sink进行分组。Sink processor能够实现分组内的sink负载均衡。以及组内sink容错,实现当组内一个sink失败时,切换至其他的sink。

Property NameDefaultDescription
sinksSpace-separated list of sinks that are participating in the group
processor.typedefaultThe component type name, needs to bedefaultfailover or load_balance

示例:

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

Default Sink Processor

    默认的sink processor仅接受单独一个sink。不必对单个sink使用processor。对单个sink可以使用source-channel-sink的方式。

Failorver Sink Processor

    Failover Sink Processor(容错处理器)拥有一个sink的优先级列表,用来保证只有一个sink可用。

    容错机制将失败的sink放入一个冷却池中,并给他设置一个冷却时间,如果重试中不断失败,冷却时间将不断增加。一旦sink成功的发送event,sink将被重新保存到一个可用sink池中。在这个可用sink池中,每一个sink都有一个关联优先级值,值越大优先级越高。当一个sink发送event失败时,剩下的sink中优先级最高的sink将试着发送event。例如:在选择发送event的sink时,优先级100的sink将优先于优先级80的sink。如果没有设置sink的优先级,那么优先级将按照设置的顺序从左至右,由高到低来决定。

    设置sink组的processor为failover,并且为每个独立的sink配置优先级,优先级不能重复。通过设置参数maxpenalty,来设置冷却池中的sink的最大冷却时间。

Property NameDefaultDescription
sinksSpace-separated list of sinks that are participating in the group
processor.typedefaultThe component type name, needs to be failover
processor.priority.<sinkName>Priority value. <sinkName> must be one of the sink instances associated with the current sink group A higher priority value Sink gets activated earlier. A larger absolute value indicates higher priority
processor.maxpenalty30000The maximum backoff period for the failed Sink (in millis)

    

    示例:

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(负载均衡处理器)在多个sink间实现负载均衡。数据分发到多个活动的sink,处理器用一个索引化的列表来存储这些sink的信息。处理器实现两种数据分发机制,轮循选择机制和随机选择机制。默认的分发机制是轮循选择机制,可以通过配置修改。同时我们可以通过继承AbstractSinkSelector来实现自定义数据分发选择机制。

    选择器按照我们配置的选择机制执行选择sink。当sink失败时,处理器将根据我们配置的选择机制,选择下一个可用的sink。这种方式中没有黑名单,而是主动常识每一个可用的sink。如果所有的sink都失败了,选择器将把这些失败传递给sink的执行者。

    如果设置backoff为true,处理器将会把失败的sink放进黑名单中,并且为失败的sink设置一个在黑名单驻留的时间,在这段时间内,sink将不会被选择接收数据。当超过黑名单驻留时间,如果该sink仍然没有应答或者应答迟缓,黑名单驻留时间将以指数的方式增加,以避免长时间等待sink应答而阻塞。如果设置backoff为false,在轮循的方式下,失败的数据将被顺序的传递给下一个sink,因此数据分发就变成非均衡的了。

Property NameDefaultDescription
processor.sinksSpace-separated list of sinks that are participating in the group
processor.typedefaultThe component type name, needs to beload_balance
processor.backofffalseShould failed sinks be backed off exponentially.
processor.selectorround_robinSelection mechanism. Must be eitherround_robinrandom or FQCN of custom class that inherits fromAbstractSinkSelector
processor.selector.maxTimeOut30000Used by backoff selectors to limit exponential backoff (in milliseconds)

    示例:

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容错Avro sink示例

下一篇: Flume sink 到 Kafka、HDFS和HBase的例子

2222 人读过
立即登录, 发表评论.
没有帐号? 立即注册
0 条评论
文档导航