Flume-1.8.0(八)Process

2021-07-30  本文已影响0人  _大叔_

概述

Sink Group 允许用户将多个Sink组合成一个实体。Flume Sink Process 可以通过切换组内Sink用来实现负载均衡的效果,或在一个Sink故障时切换到另一个Sink。

Failover Sink Processor 故障恢复

Failover Sink Processor 维护一个sink们的优先表。确保只要一个可用的,事件就可以被处理。失败处理原则是,为失效的sink指定一个冷却时间,在冷却时间达到后再重新使用,这里会有个问题就是重新启动的flume和备用的flume都会接收到信息。当node104宕机不在工作,node113就会被执行工作。

sink们可以被配置一个优先级,数字越大优先级越高。

如果sink们发送时间失败,则下一个最高优先级的sink奖会尝试接着发送事件。

如果没有指定优先级,则优先级顺序取决于sink们的配置顺序,先配置的默认优先级高于后配置的。

在配置过程中,设置一个 group processor,并且为每个sink指定一个优先级,优先级必须是唯一的。

配置

# a1 代表一个flume 给每个组件匿名
a1.sources=r1
a1.channels=c1 c2
a1.sinks=s1 s2

# 配置故障恢复
a1.sinkgroups=g1
a1.sinkgroups.g1.sinks=s1 s2
a1.sinkgroups.g1.processor.type=failover
a1.sinkgroups.g1.processor.priority.s1=5
a1.sinkgroups.g1.processor.priority.s2=10


# 指定source 的数据来源以及堆外开放的端口
a1.sources.r1.type=netcat
a1.sources.r1.bind=node113
a1.sources.r1.port=8888

# 指定a1的channels基于内存
a1.channels.c1.type=memory
a1.channels.c2.type=memory

# 指定a1的sinks 输出到控制台
a1.sinks.s1.type=avro
a1.sinks.s1.hostname=node103
a1.sinks.s1.port=8888

a1.sinks.s2.type=avro
a1.sinks.s2.hostname=node104
a1.sinks.s2.port=8888

# 绑定a1 sources和channle 的关系
a1.sources.r1.channels=c1 c2
# 绑定a1 sinks 和 channel 的关系
a1.sinks.s1.channel=c1
a1.sinks.s2.channel=c2

Load balancing Sink Processor 负载均衡

Load balancing Sink Processor 提供了再多个sink之间实现负载均衡的能力。他维护了一个活动sink的索引列表。它支持轮询或所及方式的负载均衡,默认值是轮询方式,可以通过篇日志指定,也可以通过实现 AbstractSinkSelector 接口实现自定义的选择机制。

负载均衡的机制是通过 单个channel 轮询或随机发送给某个sink。

配置

# a1 代表一个flume 给每个组件匿名
a1.sources=r1
a1.channels=c1
a1.sinks=s1 s2

# 配置负载
a1.sinkgroups=g1
a1.sinkgroups.g1.sinks=s1 s2
a1.sinkgroups.g1.processor.type=load_balance
a1.sinkgroups.g1.processor.selector=round_robin


# 指定source 的数据来源以及堆外开放的端口
a1.sources.r1.type=netcat
a1.sources.r1.bind=node113
a1.sources.r1.port=8888

# 指定a1的channels基于内存
a1.channels.c1.type=memory

# 指定a1的sinks 输出到控制台
a1.sinks.s1.type=avro
a1.sinks.s1.hostname=node103
a1.sinks.s1.port=8888

a1.sinks.s2.type=avro
a1.sinks.s2.hostname=node104
a1.sinks.s2.port=8888

# 绑定a1 sources和channle 的关系
a1.sources.r1.channels=c1
# 绑定a1 sinks 和 channel 的关系
a1.sinks.s1.channel=c1
a1.sinks.s2.channel=c1
上一篇 下一篇

猜你喜欢

热点阅读