flume+kafka 性能问题
应用场景:
在使用spoolDir作为flume source,kafka作为sink将文件内容缓存到kafka中。
问题:
发现flume + kafka在信息缓存的性能上不是很好,现在也分不清楚是谁的原因。读取一个80万的文件,大概需要5分钟左右,才全部缓存到kafka(单机环境测试)。
flume具体配置文件如下,kafka没做过优化,创建的topic (partiton 6,replication 1):
#agent section producer.sources = s producer.channels = c producer.sinks = r #source section #producer.sources.s.type = seq #producer.sources.s.channels = c producer.sources.s.type =spooldir producer.sources.s.spoolDir = /home/data producer.sources.s.channels = c producer.sources.s.deserializer.maxLineLength = 90 # Each sink's type must be defined producer.sinks.r.type = org.apache.flume.plugins.KafkaSink producer.sinks.r.metadata.broker.list=127.0.0.1:9092 producer.sinks.r.partition.key=0 producer.sinks.r.partitioner.class=org.apache.flume.plugins.SinglePartition producer.sinks.r.serializer.class=kafka.serializer.StringEncoder producer.sinks.r.request.required.acks=0 producer.sinks.r.max.message.size=1000000 producer.sinks.r.producer.type=async producer.sinks.r.custom.encoding=UTF-8 producer.sinks.r.custom.topic.name=testToptic #Specify the channel the sink should use producer.sinks.r.channel = c # Each channel's type is defined. producer.channels.c.type = memory producer.channels.c.capacity = 1000000 producer.channels.c.transactionCapacity = 1000000急求各位大大指教。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(14)
楼主问题解决了吗?可以分享下,解决方案吗?
对,主要就是配置conf/log4j.properties中log级别
回复
果然是这个问题
回复
日志调整后解决了呗
根据实际机器内存环境和每条消息字节长度综合看一下。
回复
设置10000可以正常跑。就是处理太慢了。设置10万就报gc错误了。在flume-evn的虚拟机参数把内存改为2g的还是报。这咋解决呢
producer.channels.c.type = memory
producer.channels.c.capacity = 1000000
producer.channels.c.transactionCapacity = 1000000
producer.channels.c.capacity =1000000这个我设1000000会报内存溢出,gc出问题。请问你虚拟机运行参数怎么配置的
producer.sinks.r.partition.key,producer.sinks.r.partitioner.class这两项配置去掉,producer.sinks.r.producer.type配置成async,flume日志级别配置成error再试一下。
就是beyondj2ee写的一个插件,源码没动过
@JinP 自己写个吧,很简单。那样容易盘查问题,你现在能确定是flume的syslog慢,还是flume to kafka慢吗?
回复
sink为null时,80万文件40s左右读完。kafka直接调用API进行数据缓存,使用async方式一百万大概30多秒,一结合起来就慢,问题有些头疼
kafka 的sink是你自己写的吗?代码贴上看看。
是信息量太少还是问题不典型呀?怎么没人回复呢
把partition.key和partition.class配置去掉,调整flume日志级别为ERROR级,处理性能提升不少。80万数据不到10S处理完成。