1. Kafka充当Flume的source数据源,此时也就意味着Flume需要采集Kafka的数据,Flume相当于是kafka的一个消费者
.conf文件(KafkaToConsole.conf)
| |
| a1.sources = r1 |
| |
| a1.sinks = k1 |
| |
| a1.channels = c1 |
| |
| |
| a1.sources.r1.type = org.apache.flume.source.kafka.KafkaSource |
| a1.sources.r1.batchSize = 5000 |
| a1.sources.r1.batchDurationMillis = 2000 |
| a1.sources.r1.kafka.bootstrap.servers = node1:9092,node2:9092,node3:9092 |
| a1.sources.r1.kafka.topics = kafka |
| a1.sources.r1.kafka.consumer.group.id = uek |
| |
| |
| a1.channels.c1.type = memory |
| |
| a1.channels.c1.capacity = 10000 |
| |
| a1.channels.c1.transactionCapacity = 5000 |
| |
| |
| a1.sinks.k1.type = logger |
| |
| |
| a1.sources.r1.channels = c1 |
| a1.sinks.k1.channel = c1 |
启动
| # 启动flume |
| [root@node1 data]# flume-ng agent -n a1 -f KafkaToConsole.conf -Dflume.root.logger=INFO,console |
| |
| # 生产数据1 |
| [root@node2 ~]# kafka-console-producer.sh --broker-list node1:9092,node2:9092,node3:9092 --topic kafka |
| |
| # 生产数据2---通过java代码的方式生产 |
| package new_pro; |
| |
| import org.apache.kafka.clients.producer.KafkaProducer; |
| import org.apache.kafka.clients.producer.ProducerRecord; |
| |
| import java.util.Properties; |
| |
| |
| public class NewProducer { |
| public static void main(String[] args) { |
| Properties props = new Properties(); |
| |
| props.put("bootstrap.servers", "192.168.200.111:9092, 192.168.200.112:9092, 192.168.200.113:9092"); |
| |
| props.put("acks", "all"); |
| |
| props.put("retries", 0); |
| |
| props.put("batch.size", 16384); |
| |
| props.put("linger.ms", 1); |
| |
| props.put("buffer.memory", 33554432); |
| |
| props.put("key.serializer", "org.apache.kafka.common.serialization.StringSerializer"); |
| |
| props.put("value.serializer", "org.apache.kafka.common.serialization.StringSerializer"); |
| |
| KafkaProducer<Object, Object> producer = new KafkaProducer<Object, Object>(props); |
| for (int i = 0; i < 100; i++) { |
| producer.send(new ProducerRecord<Object, Object>("kafka", "hello--"+i)); |
| } |
| |
| |
| producer.close(); |
| } |
| } |
2. Kafka充当Flume的channel缓存管道,相当于是将Flume采集的数据源的数据先存放到kafka当中,此时Flume相当于是Kafka的生产者
- 说明:flume相当于是kafka的生产者,生产数据到指定的主题中 主题是flume(自定义) 如果flume主题不存在 会自动创建。但是如果是自动创建的,必须重新启动一下flume采集程序,因为自动创建的topic主题的分区有问题的。重启一下即可
如果flume充当kafka的生产者,要求topic主题最好提前存在
.config文件(netcatToLogger.conf)
| |
| a1.sources = r1 |
| |
| a1.sinks = k1 |
| |
| a1.channels = c1 |
| |
| |
| a1.sources.r1.type = netcat |
| |
| a1.sources.r1.bind = node1 |
| |
| a1.sources.r1.port = 44444 |
| |
| |
| |
| a1.channels.c1.type = org.apache.flume.channel.kafka.KafkaChannel |
| a1.channels.c1.kafka.bootstrap.servers = node1:9092,node2:9092,node3:9092 |
| a1.channels.c1.kafka.topic = flume |
| a1.channels.c1.kafka.consumer.group.id = flume-consumer |
| |
| |
| a1.sinks.k1.type = logger |
| |
| |
| a1.sources.r1.channels = c1 |
| a1.sinks.k1.channel = c1 |
启动
| [root@node1 data]# flume-ng agent -n a1 -f netcatToLogger.conf -Dflume.root.logger=INFO,console |
| |
| [root@node2 ~]# telnet node1 44444 |
3. 最常用的整合方式:Kafka充当Flume的sink下沉地,也就意味着需要将Flume采集的数据源的数据采集到Kafka中,此时Flume相当于是Kafka的生产者
.conf文件(netcatToKafka.conf)
| |
| a1.sources = r1 |
| |
| a1.sinks = k1 |
| |
| a1.channels = c1 |
| |
| |
| a1.sources.r1.type = netcat |
| |
| a1.sources.r1.bind = node1 |
| |
| a1.sources.r1.port = 44444 |
| |
| |
| a1.channels.c1.type = org.apache.flume.channel.kafka.KafkaChannel |
| a1.channels.c1.kafka.bootstrap.servers = node1:9092,node2:9092,node3:9092 |
| a1.channels.c1.kafka.topic = flume |
| a1.channels.c1.kafka.consumer.group.id = flume-consumer |
| |
| |
| a1.sinks.k1.type = org.apache.flume.sink.kafka.KafkaSink |
| a1.sinks.k1.kafka.topic = student |
| a1.sinks.k1.kafka.bootstrap.servers = node1:9092,node2:9092,node3:9092 |
| a1.sinks.k1.kafka.flumeBatchSize = 200 |
| a1.sinks.k1.kafka.producer.acks = 1 |
| |
| |
| a1.sources.r1.channels = c1 |
| a1.sinks.k1.channel = c1 |
启动
| [root@node1 data]# flume-ng agent -n a1 -f netcatToKafka.conf -Dflume.root.logger=INFO,console |
| |
| [root@node2 ~]# telnet node1 44444 |
| |
| [root@node3 ~]# kafka-console-consumer.sh --bootstrap-server node1:9092 --topic student |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?