Flume Sink Processors
Property Name | Default | Description |
---|---|---|
sinks | – | Space-separated list of sinks that are participating in the group |
processor.type | default | The component type name, needs to bedefault , failover 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 Name | Default | Description |
---|---|---|
sinks | – | Space-separated list of sinks that are participating in the group |
processor.type | default | The 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.maxpenalty | 30000 | The 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 Name | Default | Description |
---|---|---|
processor.sinks | – | Space-separated list of sinks that are participating in the group |
processor.type | default | The component type name, needs to beload_balance |
processor.backoff | false | Should failed sinks be backed off exponentially. |
processor.selector | round_robin | Selection mechanism. Must be eitherround_robin , random or FQCN of custom class that inherits fromAbstractSinkSelector |
processor.selector.maxTimeOut | 30000 | Used 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
没有帐号? 立即注册