本文简单测试Kafka整合Flume,从而实现"日志 -> Flume -> Kafka"。
操作环境:
Kafka版本:1.0.1
Flume版本:1.6.0
测试前需满足以下条件:
- 已安装Kafka和Flume
- Kafka已启动
- Zookeeper已启动
1. 配置Flume的conf文件
vi /home/hadoop/flume-kafka.conf
#添加如下内容
#命名source/channel/sink
a1.sources = r1
a1.channels = c1
a1.sinks = k1
#指定source策略
a1.sources.r1.type = spooldir
a1.sources.r1.spoolDir = /home/hadoop/kafka-test
a1.sources.r1.inputCharset = utf-8
#指定source的管道
a1.sources.r1.channels = c1
#指定channel为memory
a1.channels.c1.type = memory
a1.channels.c1.capacity = 1000
a1.channels.c1.transactionCapacity = 100
#指定sink为kafka sink,并指定sink的取数channel
a1.sinks.k1.channel = c1
a1.sinks.k1.type = org.apache.flume.sink.kafka.KafkaSink
a1.sinks.k1.kafka.topic = kafka-test
a1.sinks.k1.kafka.bootstrap.servers = node01:9092,node02:9092,node03:9092
a1.sinks.k1.kafka.flumeBatchSize = 20
a1.sinks.k1.kafka.producer.acks = 1
2. 创建Flume的监控目录
mkdir -p /home/hadoop/kafka-test
3. Kafka创建topic
kafka-topics.sh --create --topic kafka-test --partitions 3 --replication-factor 2 --zookeeper node01:2181,node02:2181,node03:2181
4. 启动Flume
bin/flume-ng agent -n a1 -c conf -f /home/hadoop/flume-kafka.conf -Dflume.root.logger=info,console
5. 启动Kafka消费者
kafka-console-consumer.sh -topic kafka-test --bootstrap-server node01:9092,node02:9092,node03:9092 --from-beginning
6. 测试效果
6.1 Flume监控目录生成文件
echo "hello world" >> /home/hadoop/kafka-test/test.txt
6.2 Kafka中已消费到数据
总结
Kafka + Flume集合了两者优点,是常用的日志传输方案。
二者整合时,关键是如何配置Flume的conf文件,配置方案也可参考Flume官网。