对于kafkachannel的使用

本文介绍了如何在Flume中使用KafkaChannel,通过配置文件展示了无需Source或Sink的情况,将数据直接从Kafka通道读取或写入。在实际操作中遇到了'ConsumerTimeoutException'的问题,但解决方案尚未给出。
摘要由CSDN通过智能技术生成

flume的一个agent包括source、channel、sink,但是有时候其实可以不需要source或者是sink,比如在使用flume时,把flume监控的日志发送到kafka中,可以不用使用sink,把channel定义为kafkachannel,kafkachannel作为生产者,直接把数据生产到kafka中,或者使用flume监控kafka中的数据,把数据发送到其他地方,可以不使用source,使用kafkachannel作为消费者,从kafka中拉数据,把数据写到指定的sink上

使用 source和channel,把数据发送到kafka中,这种方法时nosink,
在这里插入图片描述
下面是配置文件的内容,
在使用kafkachannel中遇到的坑
https://blog.csdn.net/Lu_Xiao_Yue/article/details/85223206

#定义agent名, source、channel的名称
a0.sources = r1
a0.channels = c1

#具体定义source
a0.sources.r1.type = exec
a0.sources.r1.command = tail -F /data/logs.txt


a0.channels.c1.type = org.apache.flume.channel.kafka.KafkaChannel
a0.channels.c1.brokerList = bigdata01:9092,bigdata02:9092,bigdata03:9092
a0.channels.c1.zookeeperConnect=192.168.136.150:2181
a0.channels.c1.topic = usertest
#false表示是以纯文本的形式写进入的,true是以event的形式写进入的,以event写进入时,会出现乱码, 默认是true
a0.channels.c1.parseAsFlumeEvent = false
a0.sources.r1.channels = c1

测试:

执行命令

/home/bigdata/install/apache-flume-1.5.0-cdh5.3.6-bin/bin/flume-ng agent --conf   /home/bigdata/install/apache-flume-1.5.0-cdh5.3.6-bin/conf/ --name a0  --conf-file /home/bigdata/install/apache-flume-1.5.0-cdh5.3.6-bin/job/kafkacannel.conf  -Dflume.root.logger==INFO,console

开启一个消费者:

kafka-console-consumer.sh --bootstrap-server bigdata01:9092,bigdata02:9092,bigdata03:9092 --topic usertest --from-beginning

手动向文件中生产数据

echo "aaaaaaaaa">>/data/logs.txt

观察到消费者消费者到了数据

二、

上面是没有sink,下面介绍no source
配置文件

agent.channels = kafka-channel
agent.sources = no-source
agent.sinks = k1

agent.channels.kafka-channel.type = org.apache.flume.channel.kafka.KafkaChannel

agent.channels.kafka-channel.brokerList = bigdata01:9092,bigdata02:9092,bigdata03:9092
agent.channels.kafka-channel.zookeeperConnect = bigdata01:2181,bigdata02:2181,bigdata03:2181
agent.channels.kafka-channel.topic = sinktopic
agent.channels.kafka-channel.consumer.group.id = groupM
agent.channels.kafka-channel.kafka.consumer.timeout.ms = 100
agent.channels.kafka-channel.parseAsFlumeEvent = false


agent.sinks.k1.type = file_roll
agent.sinks.k1.sink.directory = /home/bigdata/data/logs/kafkaChannel

agent.sinks.k1.channel = kafka-channel

运行命令

/home/bigdata/install/apache-flume-1.5.0-cdh5.3.6-bin/bin/flume-ng agent --conf conf/ --name agent  --conf-file /home/bigdata/install/apache-flume-1.5.0-cdh5.3.6-bin/job/noSource.conf   -Dflume.root.logger==INFO,console

开启kafka生产者:

kafka-console-producer.sh   --broker-list   bigdata01:9092,bigdata02:9092,bigdata03:9092 --topic sinktopic

在这里插入图片描述

查看结果
在这里插入图片描述

问题遇到一个错误:如下
还没解决

Timed out while waiting for data to come from Kafka
kafka.consumer.ConsumerTimeoutException
at kafka.consumer.ConsumerIterator.makeNext(ConsumerIterator.scala:69)
at kafka.consumer.ConsumerIterator.makeNext(ConsumerIterator.scala:33)
at kafka.utils.IteratorTemplate.maybeComputeNext(IteratorTemplate.scala:66)
at kafka.utils.IteratorTemplate.hasNext(IteratorTemplate.scala:58)
at org.apache.flume.channel.kafka.KafkaChannel K a f k a T r a n s a c t i o n . d o T a k e ( K a f k a C h a n n e l . j a v a : 294 ) a t o r g . a p a c h e . f l u m e . c h a n n e l . B a s i c T r a n s a c t i o n S e m a n t i c s . t a k e ( B a s i c T r a n s a c t i o n S e m a n t i c s . j a v a : 113 ) a t o r g . a p a c h e . f l u m e . c h a n n e l . B a s i c C h a n n e l S e m a n t i c s . t a k e ( B a s i c C h a n n e l S e m a n t i c s . j a v a : 95 ) a t o r g . a p a c h e . f l u m e . s i n k . R o l l i n g F i l e S i n k . p r o c e s s ( R o l l i n g F i l e S i n k . j a v a : 191 ) a t o r g . a p a c h e . f l u m e . s i n k . D e f a u l t S i n k P r o c e s s o r . p r o c e s s ( D e f a u l t S i n k P r o c e s s o r . j a v a : 68 ) a t o r g . a p a c h e . f l u m e . S i n k R u n n e r KafkaTransaction.doTake(KafkaChannel.java:294) at org.apache.flume.channel.BasicTransactionSemantics.take(BasicTransactionSemantics.java:113) at org.apache.flume.channel.BasicChannelSemantics.take(BasicChannelSemantics.java:95) at org.apache.flume.sink.RollingFileSink.process(RollingFileSink.java:191) at org.apache.flume.sink.DefaultSinkProcessor.process(DefaultSinkProcessor.java:68) at org.apache.flume.SinkRunner KafkaTransa

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值