大数据03-整合 Flume 和 Kafka 收集日志

有了之前的介绍,我们可以使用 Flume 和 Kafka 一起来完成项目日志输出到 kafka,然后编程消费者进行日志处理。

1、示例图

示例图

下面蓝色的是我们需要修改的

2、配置 flume

在 A 机器上,(也可以在 C 机器上,这里为了方便) flume 中新增一个配置文件 avro-mem-kafka.conf
注意 bootstrap.servers 的写法,需要和版本对应

# Base
avro-mem-kafka.sources = avro-source
avro-mem-kafka.sinks = kafka-sink
avro-mem-kafka.channels = mem-channel
# Source
avro-mem-kafka.sources.avro-source.type = avro
avro-mem-kafka.sources.avro-source.bind = localhost
avro-mem-kafka.sources.avro-source.port = 44444
# Sink  https://flume.apache.org/FlumeUserGuide.html#kafka-sink
avro-mem-kafka.sinks.kafka-sink.type = org.apache.flume.sink.kafka.KafkaSink
avro-mem-kafka.sinks.kafka-sink.kafka.bootstrap.servers=PLAINTEXT://192.168.31.122:9092,PLAINTEXT://192.168.31.122:9093,PLAINTEXT://192.168.31.122:9094
avro-mem-kafka.sinks.kafka-sink.kafka.topic=my-replicated-topic
# Channel
avro-mem-kafka.channels.mem-channel.type = memory
# Link
avro-mem-kafka.sources.avro-source.channels = mem-channel
avro-mem-kafka.sinks.kafka-sink.channel = mem-channel

启动 Kafka

在 C 机器上先启动 ZK,再启动 Kafka 集群

zkServer.sh start

kafka-server-start.sh $KAFKA_HOME/config/server.properties &
kafka-server-start.sh $KAFKA_HOME/config/server-1.properties &
kafka-server-start.sh $KAFKA_HOME/config/server-2.properties &

启动 flume

这两个脚本都在 A 机器上运行,也可以分开


$ bin/flume-ng agent \
--conf $FLUME_HOME/conf \
--conf-file $FLUME_HOME/conf/avro-mem-kafka.conf \
--name avro-mem-kafka \
-Dflume.root.logger=DEBUG,console 
-Dorg.apache.flume.log.printconfig=true 
-Dorg.apache.flume.log.rawdata=true


$ bin/flume-ng agent \
--conf $FLUME_HOME/conf \
--conf-file $FLUME_HOME/conf/exec-mem-avro.conf \
--name exec-mem-avro \
-Dflume.root.logger=DEBUG,console 
-Dorg.apache.flume.log.printconfig=true 
-Dorg.apache.flume.log.rawdata=true

开启消费者

kafka-console-consumer.sh --bootstrap-server PLAINTEXT://192.168.31.122:9092,PLAINTEXT://192.168.31.122:9093,PLAINTEXT://192.168.31.122:9094 --from-beginning --topic my-replicated-topic

在 A 机器上输入日志,将会看到消费者打印出

推荐阅读更多精彩内容