学习到电商数仓的日志采集时,flume定义了filesource-KafkaChannel-无sink来生产日志放在kafka中,消费日志使用kafkaSource-fileChannel-hdfsSink来将日志放到hdfs中,好让日后进行相关计算业务。
问题:KafkaChannle读取了log文件,但是hdfsSink没有产生文件?
方法:
①查看生产者flume日志,和消费者flume日志,看有没有相关ERROR
启动生产者和消费者的命令应该加上写到文件中,不然无法看出错误
“nohup /home/module/flume/bin/flume-ng agent --conf-file /home/module/flume/conf/file-flume-kafka.conf --name a1 -Dflume.root.logger=INFO,LOGFILE >/home/module/flume/logs/log.txt 2>&1 &”
(nohup 不挂起运行,& 后台运行 ,2>&1 标准输入1和2,相当于INFO和ERROR)
②查看kafka的server.log,看有没有出错
③自己定义消费者消费相关topic,命令如下:
bin/kafka-console-consumer.sh --bootstrap-server hadoop201:9092,hadoop202:9092,hadoop203:9092 --topic topic_start --from-beginning
如果阻塞住没有显示任何消息,则表示没有生产消息
以上可以得出结论,生产者flume的配置中使用了interceptor,该拦截器出现问题。
还有
消费日志出现
WARN clients.NetworkClient: Error while fetching metadata with correlation id 15 : {topic_event=LEADER_NOT_AVAILABLE} 不用理会,如果是ERROR,则应该在zookeeper中删除brokers,命令如下
zkCli,sh 启动zookeeper客户端
rmr /brokers 删除brokers