flume配置负载均衡

集群配置了3台机器,分别为master,slave,slave2

ip地址分别为192.168.88.128,192.168.88.129,192.168.88.130


其中master的配置为:

agent.sources = source1
agent.channels = channel1
agent.sinks = sink1 sink2
agent.sinkgroups = group1

agent.sinkgroups.group1.sinks = sink1 sink2
agent.sinkgroups.group1.processor.type = load_balance
agent.sinkgroups.group1.processor.selector = round_robin
agent.sinkgroups.group1.processor.backoff = true

agent.channels.channel1.type = file
agent.channels.channel1.checkpointDir = /tmp/flume/loadcheckpoint
agent.channels.channel1.dataDirs = /tmp/flume/loaddata

# For each one of the sources, the type is defined
agent.sources.source1.type = exec

agent.sources.source1.command = tail -F /home/bigdata/datasource/flume_user_action.txt

# The channel can be defined as follows.
agent.sources.source1.channels = channel1

agent.sinks.sink1.channel = channel1
agent.sinks.sink1.type = avro
agent.sinks.sink1.hostname = slave
agent.sinks.sink1.port = 41414
#Specify the channel the sink should use
agent.sinks.sink2.channel = channel1
agent.sinks.sink2.type = avro
agent.sinks.sink2.hostname = slave2
agent.sinks.sink2.port = 41414

slave的配置为:

agent.sources = source1
agent.channels = channel1
agent.sinks = sink1

agent.sources.source1.type = avro
agent.sources.source1.bind = 192.168.88.129
agent.sources.source1.port = 41414
agent.sources.source1.channels= channel1

agent.channels.channel1.type = file
agent.channels.channel1.checkpointDir = /home/bigdata/tmp/flume/checkpoint
agent.channels.channel1.dataDirs = /home/bigdata/tmp/flume/channeldata

agent.sinks.sink1.channel = channel1
agent.sinks.sink1.type = file_roll
agent.sinks.sink1.sink.directory = /home/bigdata/tmp/flume/loaddata
agent.sinks.sink1.sink.rollInterval = 0

slave2的配置为:

agent.sources = source1
agent.channels = channel1
agent.sinks = sink1


agent.sources.source1.type = avro
agent.sources.source1.bind = 192.168.88.130
agent.sources.source1.port = 41414
agent.sources.source1.channels = channel1


agent.channels.channel1.type = file
agent.channels.channel1.checkpointDir = /home/bigdata/tmp/flume/checkpoint
agent.channels.channel1.dataDirs = /home/bigdata/tmp/flume/channeldata


agent.sinks.sink1.channel = channel1
agent.sinks.sink1.type = file_roll
agent.sinks.sink1.sink.directory = /home/bigdata/tmp/flume/loaddata
agent.sinks.sink1.sink.rollInterval = 0

有几个地方要注意一下,第一个是agent.sources.source1.bind的地址必须填ip地址,不然master的sink写不过来

报错如下:

Exception in thread "main" org.apache.flume.FlumeException:NettyAvroRpcClient{

host:xxxx,port:xxxx}:RPC connection error


第二个是agent.sinks.sink1.sink.directory这个参数的目录必须存在,不然写不进去

报错如下:



Flume是一个分布式、可靠且可扩展的海量日志收集系统,用于收集、聚合和移动大量数据。为了实现负载均衡Flume通常会使用Source、Channel和Sink组件协同工作。画出Flume负载均衡图,你需要考虑以下几个关键部分: 1. **Source(源)**:这是数据进入Flume的第一个节点,可能是从不同的数据源,如日志文件、网络或其它系统收集来的数据。每个Source可能对应多个实例,以便处理多个输入流。 2. **Channels(通道)**:Flume使用持久化的内存队列或文件作为数据缓冲区,例如Memory Channel、 JDBC Channel等。这些Channel可以有多个实例,根据配置将数据分发到不同的Sink。 3. **Sink(sink)**:数据最终被发送到目的地,如Hadoop HDFS、Solr、Kafka或直接写入数据库。同样,Sink也可以有多个实例,用于负载均衡或冗余存储。 4. **Load Balancer(负载均衡器)**:虽然Flume本身并不内置负载均衡功能,但你可以通过外部工具或自定义代理(如Zookeeper或Consul)实现流量分配,确保数据均匀地流向各个Sink。 画图时,通常会显示一个或多个Source指向一个或多个Channels,而Channels又连接到多个Sink。每个组件可能会有箭头标注数据流动的方向,并可能用不同颜色或图形表示不同的实例。 相关问题-- 1. Flume中的Load Balancer是如何实现的? 2. 除了默认配置,如何手动配置Flume实现负载均衡? 3. 在高并发场景下,如何优化Flume负载均衡策略?
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值