sink组负载均衡
负载均衡的目的就是为了防止单个服务器的压力较大,所以采用两个sink进行负载,channel会随机的从sink组中挑选一个sink进行传输。
这里有一个问题,我设置了负载均衡,然后配置的是round_robin,采用轮询方式,如果我数据一条一条的发送,最终是进行轮询,将数据分别进行发送,但是如果数据发送过快,我发现就不是轮询,而是将所有数据都发往同一个sink了,这里我的理解就是说,它说的轮询并不是按数据条来,而是按数据批次,他是按照每一批数据进行轮询,也是大数据集群肯定是不能够以一条数据为单位,应该是按照批次。
Flume1
a1.sources = r1 a1.sinks = k1 k2 a1.channels = c1 # 配置sink组 a1.sinkgroups=g1 a1.sinkgroups.g1.sinks = k1 k2 # 配置负载均衡 a1.sinkgroups.g1.processor.type = load_balance a1.sinkgroups.g1.processor.backoff=true a1.sinkgroups.g1.processor.selector=round_robin a1.sources.r1.type = netcat a1.sources.r1.bind = localhost a1.sources.r1.port = 44444 a1.sinks.k1.type = avro a1.sinks.k1.hostname=hadoop102 a1.sinks.k1.port=4141 a1.sinks.k2.type = avro a1.sinks.k2.hostname=hadoop102 a1.sinks.k2.port=4142 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 a1.sinks.k2.channel = c1
Flume2
a2.sources = r1 a2.sinks = k1 a2.channels = c1 a2.sources.r1.type = avro a2.sources.r1.bind=hadoop102 a2.sources.r1.port=4141 a2.sinks.k1.type = logger a2.channels.c1.type = memory a2.channels.c1.capacity = 1000 a2.channels.c1.transactionCapacity = 100 a2.sources.r1.channels = c1 a2.sinks.k1.channel = c1
Flume3
a3.sources = r1 a3.sinks = k1 a3.channels = c1 a3.sources.r1.type = avro a3.sources.r1.bind=hadoop102 a3.sources.r1.port=4142 a3.sinks.k1.type = logger a3.channels.c1.type = memory a3.channels.c1.capacity = 1000 a3.channels.c1.transactionCapacity = 100 a3.sources.r1.channels = c1 a3.sinks.k1.channel = c1