微信搜索lxw1234bigdata | 邀请体验:数阅–数据管理、OLAP分析与可视化平台 | 赞助作者:赞助作者

Flume使用Kafka Sink导致CPU过高的问题

Flume lxw1234@qq.com 21520℃ 6评论

关键字:flume、kafka sink、high CPU

在日志收集服务器上使用Flume(1.6)的Kafka Sink将日志数据发送至Kafka,在Flume Agent启动之后,发现每个Agent的CPU使用率都非常高,而我们需要在每台机器上启动多个Flume Agent来收集不同类型的日志,如果每个Agent都这样,那肯定会把机器的CPU吃满了,刚开始使用jstack定位到是org.apache.flume.sink.kafka.process()的问题,后来google了下,果然是这个代码有问题。找到一个ISSUES: https://issues.apache.org/jira/browse/FLUME-2632

发现该问题在Flume1.7中fix掉了,接着找到github中Flume1.7的代码,具体就是:

https://github.com/apache/flume/blob/trunk/flume-ng-sinks/flume-ng-kafka-sink/src/main/java/org/apache/flume/sink/kafka/KafkaSink.java

使用该代码编译后替换掉flume-ng-kafka-sink-1.6.0.jar中的KafkaSink.class,重启Flume Agent之后,问题解决。

kafka sink

图中point1是运行了一个flume agent;

在point2时刻,我启动了第二个flume agent,CPU一下上来一截;

在point3时候,我使用fix之后的flume-ng-kafka-sink-1.6.0.jar,前后重启了两个flume agent,CPU使用率下降了很多。

接下来继续观察CPU使用情况以及收集的数据是否异常。

您可以关注 lxw的大数据田地 ,或者 加入邮件列表 ,随时接收博客更新的通知邮件。

如果觉得本博客对您有帮助,请 赞助作者

转载请注明:lxw的大数据田地 » Flume使用Kafka Sink导致CPU过高的问题

喜欢 (8)
分享 (0)
发表我的评论
取消评论
表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
(6)个小伙伴在吐槽
  1. 请问这个问题是怎么重现的,我们也是使用的1.6的kafaksink,生产环境中出现过一台flume的cpu很高,但就无法重现,请赐教
    mercedechf2015-12-16 15:48 回复
    • 你那边是出现后怎么处理之后就没有了?我使用之后是CPU一直都很高,因为那段代码,I looked into the source code and found that "process" function in KafkaSink always return Status.READY even if no events available in channel. That causes the SinkRunner keep running achieving event from channel and get nothing.
      lxw1234@qq.com2015-12-16 16:48 回复
  2. 现在flume没有1.7版本的吧。你那个编译好的KafkaSink.java能否发我一份。348835027@qq.com
    silentwolf2016-05-16 17:24 回复
    • github上有。
      mooseen2016-06-02 16:43 回复
  3. 请问如何一台机器启动多个agent呢???
    jjyy7788992016-06-29 14:26 回复
    • 启动agent命令一样,只需要指定不同的配置文件即可。
      lxw1234@qq.com2016-06-30 07:49 回复