首页 > 代码库 > 【Flume】flume的多路复用技术multiplexing

【Flume】flume的多路复用技术multiplexing

多路复用技术意在可以将一个event根据配置信息发送特定的channel上。

A source instance can specify multiple channels, but a sink instance can only specify one channel.

Flume supports fanning out the flow from one source to multiple channels. There are two modes of fan out, replicating and multiplexing

flume支持的从source到多个channel有两种输出方式:复制 和 复用

1、复制模式下,source收到的event data是输出到配置的所有channel上

2、复用模式下,source收到的event data是输出到配置的特定的channel上

首先这种模式的选择,flume中通过selector选择器来选择,默认是复制模式

# list the sources, sinks and channels in the agent
agent_foo.sources = avro-AppSrv-source1
agent_foo.sinks = hdfs-Cluster1-sink1 avro-forward-sink2
agent_foo.channels = mem-channel-1 file-channel-2

# set channels for source
agent_foo.sources.avro-AppSrv-source1.channels = mem-channel-1 file-channel-2

# set channel for sinks
agent_foo.sinks.hdfs-Cluster1-sink1.channel = mem-channel-1
agent_foo.sinks.avro-forward-sink2.channel = file-channel-2

# channel selector configuration
agent_foo.sources.avro-AppSrv-source1.selector.type = multiplexing
agent_foo.sources.avro-AppSrv-source1.selector.header = State
agent_foo.sources.avro-AppSrv-source1.selector.mapping.CA = mem-channel-1
agent_foo.sources.avro-AppSrv-source1.selector.mapping.AZ = file-channel-2
agent_foo.sources.avro-AppSrv-source1.selector.mapping.NY = mem-channel-1 file-channel-2
agent_foo.sources.avro-AppSrv-source1.selector.default = mem-channel-1
想上面这种情况就是一个复用通道的模式,这里的header是event 数据的header,根据header的值来判断输出到哪一个通道上。

当然上面这种情况适用于将数据源收集代码耦合在自身应用代码中的情况,因为解耦后通过其它方式而不涉及代码来收集数据,你是无法决定这个event的header数据内容的。


复制模式就更简单了,略!


【Flume】flume的多路复用技术multiplexing