设为首页 收藏本站
查看: 1365|回复: 0

[经验分享] Flume-NG之KafkaChannel

[复制链接]

尚未签到

发表于 2015-9-16 13:31:03 | 显示全部楼层 |阅读模式
  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

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-114530-1-1.html 上篇帖子: Kafka自定义zookeeper的根目录抛出“java.lang.IllegalArgumentException: Path length must be 下篇帖子: flume的自定义sink-Kafka
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表