2、Flume架构模式

一、高可用

1、原理

1.1、多台Flume部署都在多个数据源机器上,最后汇聚到同一台Flume上,对这个单点汇聚层做高可用。
1.2、一般不会对叶子节点做高可用,这样会无穷无尽。

2、架构图如下:


2、Flume架构模式_第1张图片
QQ图片20190417105906.png

3、核心

配置sinkgroups,指定处理器为failover,指定优先级

4、配置文件
4.1、Agent1,Agent2,Agent3根据实际情况配置,这里只写一种

a1.sources = r1
#配置两个sink
a1.sinks = k1 k2
a1.channels = c1

a1.sources.r1.type = netcat
a1.sources.r1.bind = node02
a1.sources.r1.port = 44444

#定义sink组
a1.sinkgroups = g1
#组中有哪些sink
a1.sinkgroups.g1.sinks = k1 k2
#处理器采用故障转移方式处理
a1.sinkgroups.g1.processor.type = failover
#设置k1和k2的优先级,值越大,优先级越高
a1.sinkgroups.g1.processor.priority.k1 = 5
a1.sinkgroups.g1.processor.priority.k2 = 10

#配置两个sink详情
a1.sinks.k1.type = avro
a1.sinks.k1.hostname = node03
a1.sinks.k1.port = 8888

a1.sinks.k2.type = avro
a1.sinks.k2.hostname = node03
a1.sinks.k2.port = 9999

a1.channels.c1.type = memory
a1.channels.c1.capacity = 1000
a1.channels.c1.transactionCapacity = 100

a1.sources.r1.channels = c1
#两个sink都从channel中获取数据
a1.sinks.k1.channel = c1
a1.sinks.k2.channel = c1

4.2、做高可用的两个flume

a1.sources = r1
a1.sinks = k1
a1.channels = c1

a1.sources.r1.type = avro
a1.sources.r1.bind = node03
a1.sources.r1.port = 8888

a1.sinks.k1.type = logger

a1.channels.c1.type = memory
a1.channels.c1.capacity = 1000
a1.channels.c1.transactionCapacity = 100

a1.sources.r1.channels = c1
a1.sinks.k1.channel = c1

二、一个Agent对应多个sink

1、使用场景

收集的数据需要同时做离线分析和实时分析,离线部分写入HDFS,实时部分写入Kafka

2、架构图


2、Flume架构模式_第2张图片
QQ图片20190417120511.png

3、配置文件
3.1、
3.2、

三、负载均衡

1、使用场景

多服务器接收数据太多时,实现多服务器并发处理数据。

2、负载方式
2.1、轮询(round_robin):内部算法轮询
2.2、随机(random)

3、架构图


2、Flume架构模式_第3张图片
QQ图片20190417122515.png

4、原理

和负载均衡类似,sinkgroups处理器类型改为负载均衡,也有两台sink的flume

5、配置

a1.sources = r1
#配置两个sink
a1.sinks = k1 k2
a1.channels = c1

a1.sources.r1.type = netcat
a1.sources.r1.bind = node02
a1.sources.r1.port = 44444

#定义sink组
a1.sinkgroups = g1
#组中有哪些sink
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

#配置两个sink详情
a1.sinks.k1.type = avro
a1.sinks.k1.hostname = node03
a1.sinks.k1.port = 8888

a1.sinks.k2.type = avro
a1.sinks.k2.hostname = node03
a1.sinks.k2.port = 9999

a1.channels.c1.type = memory
a1.channels.c1.capacity = 1000
a1.channels.c1.transactionCapacity = 100

a1.sources.r1.channels = c1
#两个sink都从channel中获取数据
a1.sinks.k1.channel = c1
a1.sinks.k2.channel = c1

你可能感兴趣的:(2、Flume架构模式)