Apache Flume Sink Processors 及其类型

1.目的

Flume Sink Process 可以从一组的Sink 中选择调用特定的sink,通常,使用Sink Processor,可用于在组内的所有Sink上提供负载平衡功能,或在某些Sink暂时失败的情况下实现从一个Sink到另一个Sink的故障转移。本章中,将学习Apache Flume中所有类型的Flume Sink Processor。 

—add picture here—-

Introduction – Apache Flume Sink Processors

2.  Apache Flume Sink Processor简介

使用Sink Processor 可用于在组内的所有Sink上提供负载平衡功能,或在某些Sink暂时失败的情况下实现从一个Sink到另一个Sink的故障转移。下表列出了Sink Processor的主要属性:

1542636586473063.png

示例如下:

a1.sinkgroups = g1
a1.sinkgroups.g1.sinks = k1 k2
a1.sinkgroups.g1.processor.type = load_balance

3. Apache Flume Sink Processor类型

 Default Sink Processor

Default Sink Processor只可接受一个 Sink Processor。 用户不必为单个的Sink创建 Processor(Sink Group)。 可以按照Source – Channel — Sink模式。

Failover Sink Processor

Failover Sink Processor维护了一个按优先级排列的 Sink 列表,通过该列表,保证只有一个可用事件消息将被Sink处理。

Failover Sink Processor的工作原理是将具有故障的Sink 组成一个Sink池,给这个故障Sink池安排一个“沉寂”时间段,一旦某个Sink成功处理一个事件消息,该Sink 就会从故障Sink池中移除,并且恢复到活动池中。每个Sink都有一个与之相关的优先级,该值越大,则优先级越高。如果在发送事件消息时Sink发生故障,则接下来具有最高优先级的Sink 去尝试处理事件消息。例如,具有优先级100的Sink将在具有优先级80的Sink之前被激活。如果没有指定优先级,则根据配置文件中指定的Sink顺序确定重试的顺序。

要进行配置,请将Sink Processor设置为Failover, 并为每个Sink设置优先级,所有指定的优先级必须唯一。

参数设置如下:

1542700969703053.png

示例如下:

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上处理。当前支持使用round_robin方式或随机选择机制来分发事件到相应的Sink上处理。选择机制默认为round_robin类型,但可以通过配置覆盖。自定义选择机制通过从AbstractSinkSelector继承的自定义类来实现。

该Sink Processor 的参数如下:

1542701066386312.png

示例如下:

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

Custom Sink Processor

自定义接收处理器目前不受支持。

Apache Flume Sink Processors 及其类型

发表评论

电子邮件地址不会被公开。 必填项已用*标注

× 2 = 十