首页 > Web开发 > 详细

Flume-NG之KafkaChannel

时间:2015-03-01 19:36:38      阅读:4222      评论:3      收藏:1      [点我收藏+]

  apache下一个版本(1.6)将会带来一个新的组件KafKaChannel,顾名思义就是使用kafka做channel,当然在CDH5.3版本已经存在这个channel。

  大伙知道,常用的channel主要有三个:

  1、memory channel:用内存做channel,优点是速度最快,容易配置;缺点是,可靠性最差,因为一旦flume进程挂了内存中还未出来的数据也就没了;

  2、file channel:用本地文件做channel,优点是可靠性最高,数据都存在磁盘文件中,进程挂了重启后还会断点续传;缺点是速度最慢;

  3、SpillableMemoryChannel:总和memory channel和file channel,本质上是一个file channel,但是优先存储在内存中,内存满了之后再溢出到磁盘,优点是兼顾上面俩的优点;同样缺点也兼顾了;

  本人了解的现有各家怎么用Flume的也不是很多,大概齐一个合理的拓扑结构是两层,第一层的source直接和原始数据源接触,这一层的Flume节点要多,其中channel用file channel或者SpillableMemoryChannel,有高可靠性;第二层是汇总节点,这里的sink可以直接输出比如hdfs、HBase、本地磁盘文件等等,这一层的flume节点会比第一层少很多,channel建议用memory channel,因为这一层节点少,要保证及时汇总传输出去,那有问题为啥不用SpillableMemoryChannel呢?上面说了,它兼顾了两个channel,而且一个重要的缺点是第二层节点流量比第一层大,一旦第二层的sink出现问题可能会导致溢出到本地磁盘,这样sink性能大大降低但是进入的流量并不会减少,而且SpillableMemoryChannel中的数据也是有顺序的,这样有可能会导致出的速度一直赶不上入的速度,一个办法是增加节点数量(增加多了为啥还要第二层呢?)或者使用memory channel。第一层加上backoff,而且使用负载均衡给第二层发送数据。

  但是现在情况大大改观了,kafkaChannel的出现使得上面的两层可以合成一层,我粗略试用了一下,exec source + kafkachannel + file_roll sink,一个broker,一个topic,一个partition,速度在42MB/s左右,这样的速度虽然比不过memory channel,但是已经远远超过file channel了,而且可靠性不输file channel。

  我们知道,kafka source用consumer来从kafka  pull数据,kafka sink使用producer将数据发到kafka。而kafka channel包含producer和consumer,producer接受source发送过来的数据放到broker中,consumer从broker中pull数据给sink。目前只允许有一个topic,而且kafka自己的参数可以加上"kafka.*"添加到flume的配置文件。

 

  今天就是简单说一下,跟大伙赶紧分享一下这个东西,同学们可以抓紧试一下哈。。。。

  源码其实也不是很难,不过说实话,关于kafka那的部分还有一些不太明了,就不好意思在这深入分析了。。。自己在后面再仔细看吧 

  kafka大伙自己学吧,这也是一个好东西。。。 

 

  参考:

  1、http://ingest.tips/2014/11/16/flafka-apache-flume-meets-apache-kafka-for-event-processing/

  2、https://github.com/cloudera/flume-ng/tree/cdh5-1.5.0_5.3.2

  3、https://github.com/apache/flume/tree/flume-1.6

Flume-NG之KafkaChannel

原文:http://www.cnblogs.com/lxf20061900/p/4307381.html

(2)
(3)
   
举报
评论 一句话评论(3
2015-10-12 17:36:29
为什么我们在使用kafkachannel的过程中出现了乱码。
回复
 (9)
 (2)
2015-10-12 17:37:24
有遇到相同的问题吗?用kafka的消费者去接收消息时,消息的第一个字符是乱码。
回复
 (9)
 (2)
2015-11-30 10:22:24
求教我使用kafka channel的时候速率是memory channel的10%左右,这是正常情况么,能看一下你的flume config么,谢谢!
回复
 (8)
 (2)
3条  
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!