Flume-----自动容灾和负载均衡

自动容灾和负载均衡

自动容灾
1 配置下游的两个采集方案

1)hadoop02上配一个下游
[root@hadoop02 ~]# mkdir flumeconf
[root@hadoop02 ~]# vim ./flumeconf/processorDown1.properties
#定义三大组件的名称  和关联
a1.sources = r1
a1.channels = c1
a1.sinks = k1
a1.sources.r1.channels = c1
a1.sinks.k1.channel = c1
​
#定义Source的相关属性
a1.sources.r1.type = avro
#绑定本机的ip或者是hostname
a1.sources.r1.bind = hadoop02
#要监听的本机上的某一个端口号,  当程序启动时,该端口号就会被使用
a1.sources.r1.port = 10086
​
#定义channel的相关属性
a1.channels.c1.type = memory
#内存存储容量 event的最大数量
a1.channels.c1.capacity=1000
#从内存中出来时,一次性提交的event的数量
a1.channels.c1.transactionCapacity=100
​
#定义Sink的相关属性
a1.sinks.k1.type=logger
a1.sinks.k1.maxBytesToLog = 16

2)hadoop03上配一个下游

[root@hadoop03 ~]# mkdir flumeconf
[root@hadoop03 ~]# vim ./flumeconf/processorDown2.properties
#定义三大组件的名称  和关联
a1.sources = r1
a1.channels = c1
a1.sinks = k1
a1.sources.r1.channels = c1
a1.sinks.k1.channel = c1
​
#定义Source的相关属性
a1.sources.r1.type = avro
#绑定本机的ip或者是hostname
a1.sources.r1.bind = hadoop03
#要监听的本机上的某一个端口号,  当程序启动时,该端口号就会被使用
a1.sources.r1.port = 10087
​
#定义channel的相关属性
a1.channels.c1.type = memory
#内存存储容量 event的最大数量
a1.channels.c1.capacity=1000
#从内存中出来时,一次性提交的event的数量
a1.channels.c1.transactionCapacity=100
​
#定义Sink的相关属性
a1.sinks.k1.type=logger
a1.sinks.k1.maxBytesToLog = 16
**2 配置上游的一个采集方案**
1)hadoop01上配一个上游
[root@hadoop01 ~]# vim flumeconf/processorup.properties
#list name of three core
a1.sources=r1
a1.channels=c1
a1.sinks=s1 s2
a1.sources.r1.channels=c1
a1.sinks.s1.channel=c1
a1.sinks.s2.channel=c1
​
​
​
#设置每个组件的接口以及属性
a1.sources.r1.type=syslogtcp
a1.sources.r1.host=hadoop01
a1.sources.r1.port=10086
a1.sources.r1.eventSize=2500
​
​
a1.channels.c1.type=memory
a1.channels.c1.capacity=1000
a1.channels.c1.transactionCapacity=100
​
​
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
​
a1.sinks.s1.type=avro
a1.sinks.s1.hostname=hadoop02
a1.sinks.s1.port=10086
​
a1.sinks.s2.type=avro
a1.sinks.s2.hostname=hadoop03
a1.sinks.s2.port=10087

3 测试
1)先启动下游的两个采集方案,再启动上游的采集方案

[root@hadoop02 ~]# flume-ng agent  -f ./flumeconf/processorDown1.properties -n a1  -Dflume.root.logger=INFO,console
[root@hadoop03 ~]# flume-ng agent  -f ./flumeconf/processorDown2.properties -n a1  -Dflume.root.logger=INFO,console
[root@hadoop01 ~]# flume-ng agent  -f ./flumeconf/processorup.properties -n a1  -Dflume.root.logger=INFO,console

2 测试:
另开一个窗口,向上游方案发送数据

[root@hadoop03 ~]# echo "aaaaaa" | nc hadoop01 10086

此时:应该是hadoop03上的采集方案收到数据

再次测试,将hadoop03上的采集方案kill掉,再发送数据,应该就是hadoop02的采集方案收到数据

[root@hadoop03 ~]# echo "aaaaaa" | nc hadoop01 10086

负载均衡
负载均衡的配置有两个,分别是round_robin和random
1 配置两个下游方案
1)hadoop01上配一个下游

[root@hadoop01 ~]# vim ./flumeconf/processor-load-balance-1.properties
#定义三大组件的名称  和关联
a1.sources = r1
a1.channels = c1
a1.sinks = k1
a1.sources.r1.channels = c1
a1.sinks.k1.channel = c1
​
#定义Source的相关属性
a1.sources.r1.type = avro
#绑定本机的ip或者是hostname
a1.sources.r1.bind = hadoop01
#要监听的本机上的某一个端口号,  当程序启动时,该端口号就会被使用
a1.sources.r1.port = 10086
​
#定义channel的相关属性
a1.channels.c1.type = memory
#内存存储容量 event的最大数量
a1.channels.c1.capacity=1000
#从内存中出来时,一次性提交的event的数量
a1.channels.c1.transactionCapacity=100
​
#定义Sink的相关属性
a1.sinks.k1.type=logger
a1.sinks.k1.maxBytesToLog = 16

2)hadoop02上配一个下游

[root@hadoop02 ~]# vim ./flumeconf/processor-load-balance-2.properties
#定义三大组件的名称  和关联
a1.sources = r1
a1.channels = c1
a1.sinks = k1
a1.sources.r1.channels = c1
a1.sinks.k1.channel = c1
​
#定义Source的相关属性
a1.sources.r1.type = avro
#绑定本机的ip或者是hostname
a1.sources.r1.bind = hadoop02
#要监听的本机上的某一个端口号,  当程序启动时,该端口号就会被使用
a1.sources.r1.port = 10086
​
#定义channel的相关属性
a1.channels.c1.type = memory
#内存存储容量 event的最大数量
a1.channels.c1.capacity=1000
#从内存中出来时,一次性提交的event的数量
a1.channels.c1.transactionCapacity=100
​
#定义Sink的相关属性
a1.sinks.k1.type=logger
a1.sinks.k1.maxBytesToLog = 16
3)hadoop03上配一个下游
[root@hadoop03 ~]# vim ./flumeconf/processor-load-balance-3.properties
#定义三大组件的名称  和关联
a1.sources = r1
a1.channels = c1
a1.sinks = k1
a1.sources.r1.channels = c1
a1.sinks.k1.channel = c1
​
#定义Source的相关属性
a1.sources.r1.type = avro
#绑定本机的ip或者是hostname
a1.sources.r1.bind = hadoop03
#要监听的本机上的某一个端口号,  当程序启动时,该端口号就会被使用
a1.sources.r1.port = 10086
​
#定义channel的相关属性
a1.channels.c1.type = memory
#内存存储容量 event的最大数量
a1.channels.c1.capacity=1000
#从内存中出来时,一次性提交的event的数量
a1.channels.c1.transactionCapacity=100
​
#定义Sink的相关属性
a1.sinks.k1.type=logger
a1.sinks.k1.maxBytesToLog = 16
2 配置上游的一个采集方案
1)hadoop01上配一个上游
[root@hadoop01 ~]# vim flumeconf/processor-load-balance-0.properties
#list name of three core
a1.sources=r1
a1.channels=c1
a1.sinks=s1 s2 s3
a1.sources.r1.channels=c1
a1.sinks.s1.channel=c1
a1.sinks.s2.channel=c1
a1.sinks.s3.channel=c1
​
​
#设置每个组件的接口以及属性
a1.sources.r1.type=syslogtcp
a1.sources.r1.host=hadoop01
a1.sources.r1.port=10085
a1.sources.r1.eventSize=2500
​
​
a1.channels.c1.type=memory
a1.channels.c1.capacity=1000
a1.channels.c1.transactionCapacity=100
​
​
a1.sinks.s1.type=avro
a1.sinks.s1.hostname=hadoop01
a1.sinks.s1.port=10086
​
a1.sinks.s2.type=avro
a1.sinks.s2.hostname=hadoop02
a1.sinks.s2.port=10086
​
a1.sinks.s3.type=avro
a1.sinks.s3.hostname=hadoop03
a1.sinks.s3.port=10086
​
a1.sinkgroups = g1
a1.sinkgroups.g1.sinks = s1 s2 s3
a1.sinkgroups.g1.processor.type = load_balance
a1.sinkgroups.g1.processor.backoff=true
a1.sinkgroups.g1.processor.selector=round_robin

3) 测试
1)先启动下游的三个采集方案,再启动上游的采集方案

[root@hadoop01 ~]# flume-ng agent  -f ./flumeconf/processor-load-balance-1.properties -n a1  -Dflume.root.logger=INFO,console
[root@hadoop02 ~]# flume-ng agent  -f ./flumeconf/processor-load-balance-2.properties -n a1  -Dflume.root.logger=INFO,console
[root@hadoop03 ~]# flume-ng agent  -f ./flumeconf/processor-load-balance-3.properties -n a1  -Dflume.root.logger=INFO,console

[root@hadoop01 ~]# flume-ng agent  -f ./flumeconf/processor-load-balance-0.properties -n a1  -Dflume.root.logger=INFO,console

2 测试:
另开一个窗口,向上游方案发送数据

[root@hadoop03 ~]# echo "aaaaaa" | nc hadoop01 10085


注意:round_robin并不会完全的轮询进行

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值